ImageHasher.hpp 598 B

123456789101112131415161718192021222324
  1. #pragma once
  2. #include <opencv2/opencv.hpp>
  3. #include <string>
  4. #include <vector>
  5. #include <cstdint>
  6. class ImageHasher {
  7. public:
  8. // dHash: 64-bit integer
  9. static uint64_t calculateDHash(const cv::Mat& image);
  10. // pHash: 64-bit integer
  11. static uint64_t calculatePHash(const cv::Mat& image);
  12. // Hamming distance
  13. static int hammingDistance(uint64_t h1, uint64_t h2);
  14. // Helper for loading large images
  15. static cv::Mat loadImage(const std::string& path, int targetSize = 512);
  16. private:
  17. static constexpr int DHASH_SIZE = 8;
  18. static constexpr int PHASH_SIZE = 32;
  19. };