#pragma once #include "AbstractImageAnalyzer.h" #include namespace asst { class HashImageAnalyzer : public AbstractImageAnalyzer { public: using AbstractImageAnalyzer::AbstractImageAnalyzer; virtual ~HashImageAnalyzer() override = default; virtual bool analyze() override; void set_mask_range(int lower, int upper) noexcept; void set_mask_range(std::pair mask_range) noexcept; void set_hash_templates(std::unordered_map hash_templates) noexcept; void set_need_split(bool need_split) noexcept; void set_need_bound(bool need_bound) noexcept; const std::vector& get_min_dist_name() const noexcept; const std::vector& get_hash() const noexcept; static std::string s_hash(const cv::Mat& img); static int hamming(std::string hash1, std::string hash2); static std::vector split_bin(const cv::Mat& bin); static cv::Mat bound_bin(const cv::Mat& bin); protected: std::pair m_mask_range; std::unordered_map m_hash_templates; bool m_need_split = false; bool m_need_bound = false; std::vector m_hash_result; std::vector m_min_dist_name; }; }