// 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_QUALITYBASE_HPP #define OPENCV_QUALITYBASE_HPP #include /** @defgroup quality Image Quality Analysis (IQA) API */ namespace cv { namespace quality { //! @addtogroup quality //! @{ /************************************ Quality Base Class ************************************/ class CV_EXPORTS_W QualityBase : public virtual Algorithm { public: /** @brief Destructor */ virtual ~QualityBase() = default; /** @brief Compute quality score per channel with the per-channel score in each element of the resulting cv::Scalar. See specific algorithm for interpreting result scores @param img comparison image, or image to evalute for no-reference quality algorithms */ virtual CV_WRAP cv::Scalar compute( InputArray img ) = 0; /** @brief Returns output quality map that was generated during computation, if supported by the algorithm */ virtual CV_WRAP void getQualityMap(OutputArray dst) const { if (!dst.needed() || _qualityMap.empty() ) return; dst.assign(_qualityMap); } /** @brief Implements Algorithm::clear() */ CV_WRAP void clear() CV_OVERRIDE { _qualityMap = _mat_type(); Algorithm::clear(); } /** @brief Implements Algorithm::empty() */ CV_WRAP bool empty() const CV_OVERRIDE { return _qualityMap.empty(); } protected: /** @brief internal mat type default */ using _mat_type = cv::UMat; /** @brief Output quality maps if generated by algorithm */ _mat_type _qualityMap; }; // QualityBase //! @} } // quality } // cv #endif