fast-yolo4/3rdparty/opencv/inc/opencv2/img_hash/block_mean_hash.hpp
2024-09-25 09:43:03 +08:00

53 lines
1.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_BLOCK_MEAN_HASH_HPP
#define OPENCV_BLOCK_MEAN_HASH_HPP
#include "img_hash_base.hpp"
namespace cv {
namespace img_hash {
//! @addtogroup img_hash
//! @{
enum BlockMeanHashMode
{
BLOCK_MEAN_HASH_MODE_0 = 0, //!< use fewer block and generate 16*16/8 uchar hash value
BLOCK_MEAN_HASH_MODE_1 = 1, //!< use block blocks(step sizes/2), generate 31*31/8 + 1 uchar hash value
};
/** @brief Image hash based on block mean.
See @cite zauner2010implementation for details.
*/
class CV_EXPORTS_W BlockMeanHash : public ImgHashBase
{
public:
/** @brief Create BlockMeanHash object
@param mode the mode
*/
CV_WRAP void setMode(int mode);
CV_WRAP std::vector<double> getMean() const;
CV_WRAP static Ptr<BlockMeanHash> create(int mode = BLOCK_MEAN_HASH_MODE_0);
protected:
BlockMeanHash() {}
};
/** @brief Computes block mean hash of the input image
@param inputArr input image want to compute hash value, type should be CV_8UC4, CV_8UC3 or CV_8UC1.
@param outputArr Hash value of input, it will contain 16 hex decimal number, return type is CV_8U
@param mode the mode
*/
CV_EXPORTS_W void blockMeanHash(cv::InputArray inputArr,
cv::OutputArray outputArr,
int mode = BLOCK_MEAN_HASH_MODE_0);
//! @}
}} // cv::img_hash::
#endif // OPENCV_BLOCK_MEAN_HASH_HPP