opencv_mv/QMainPro/QMacVisual/include/opencv2/dnn_superres.hpp

134 lines
3.5 KiB
C++

// This file is part of OpenCV project.
// It is subject to the license terms in the LICENSE file found in the top-level directory
// of this distribution and at http://opencv.org/license.html.
#ifndef _OPENCV_DNN_SUPERRES_HPP_
#define _OPENCV_DNN_SUPERRES_HPP_
/** @defgroup dnn_superres DNN used for super resolution
This module contains functionality for upscaling an image via convolutional neural networks.
The following four models are implemented:
- EDSR <https://arxiv.org/abs/1707.02921>
- ESPCN <https://arxiv.org/abs/1609.05158>
- FSRCNN <https://arxiv.org/abs/1608.00367>
- LapSRN <https://arxiv.org/abs/1710.01992>
*/
#include "opencv2/core.hpp"
#include "opencv2/dnn.hpp"
namespace cv
{
namespace dnn_superres
{
//! @addtogroup dnn_superres
//! @{
/** @brief A class to upscale images via convolutional neural networks.
The following four models are implemented:
- edsr
- espcn
- fsrcnn
- lapsrn
*/
class CV_EXPORTS_W DnnSuperResImpl
{
private:
/** @brief Net which holds the desired neural network
*/
dnn::Net net;
std::string alg; //algorithm
int sc; //scale factor
void reconstruct_YCrCb(InputArray inpImg, InputArray origImg, OutputArray outpImg, int scale);
void preprocess_YCrCb(InputArray inpImg, OutputArray outpImg);
public:
/** @brief Empty constructor for python
*/
CV_WRAP static Ptr<DnnSuperResImpl> create();
// /** @brief Empty constructor
// */
DnnSuperResImpl();
/** @brief Constructor which immediately sets the desired model
@param algo String containing one of the desired models:
- __edsr__
- __espcn__
- __fsrcnn__
- __lapsrn__
@param scale Integer specifying the upscale factor
*/
DnnSuperResImpl(const String& algo, int scale);
/** @brief Read the model from the given path
@param path Path to the model file.
*/
CV_WRAP void readModel(const String& path);
/** @brief Read the model from the given path
@param weights Path to the model weights file.
@param definition Path to the model definition file.
*/
void readModel(const String& weights, const String& definition);
/** @brief Set desired model
@param algo String containing one of the desired models:
- __edsr__
- __espcn__
- __fsrcnn__
- __lapsrn__
@param scale Integer specifying the upscale factor
*/
CV_WRAP void setModel(const String& algo, int scale);
/** @brief Set computation backend
*/
CV_WRAP void setPreferableBackend(int backendId);
/** @brief Set computation target
*/
CV_WRAP void setPreferableTarget(int targetId);
/** @brief Upsample via neural network
@param img Image to upscale
@param result Destination upscaled image
*/
CV_WRAP void upsample(InputArray img, OutputArray result);
/** @brief Upsample via neural network of multiple outputs
@param img Image to upscale
@param imgs_new Destination upscaled images
@param scale_factors Scaling factors of the output nodes
@param node_names Names of the output nodes in the neural network
*/
CV_WRAP void upsampleMultioutput(InputArray img, std::vector<Mat> &imgs_new, const std::vector<int>& scale_factors, const std::vector<String>& node_names);
/** @brief Returns the scale factor of the model:
@return Current scale factor.
*/
CV_WRAP int getScale();
/** @brief Returns the scale factor of the model:
@return Current algorithm.
*/
CV_WRAP String getAlgorithm();
};
//! @} dnn_superres
}} // cv::dnn_superres::
#endif