使用 Python 中的 OpenCV 图像哈希模块
Using OpenCV's Image Hashing Module from Python
我想使用来自 Python 的 OpenCV 的 perceptual hashing functions。
这是行不通的。
import cv2
a_1 = cv2.imread('a.jpg')
cv2.img_hash_BlockMeanHash.compute(a_1)
我得到:
TypeError: descriptor 'compute' requires a 'cv2.img_hash_ImgHashBase' object but received a 'numpy.ndarray'
这也是失败的
a_1_base = cv2.img_hash_ImgHashBase(a_1)
cv2.img_hash_BlockMeanHash.compute(a_1_base)
我得到:
TypeError: Incorrect type of self (must be 'img_hash_ImgHashBase' or its derivative)
显示以下内容的 Colab 笔记本:
https://colab.research.google.com/drive/1x5ZxMBD3wFts2WKS4ip3rp4afDx0lGhi
这是 OpenCV python 接口与 C++ 接口的常见兼容性差距(即 类 不会以相同的方式相互继承)。有 *_create()
静态函数。
所以你应该使用:
hsh = cv2.img_hash.BlockMeanHash_create()
hsh.compute(a_1)
在您的协作笔记本副本中:
https://colab.research.google.com/drive/1CLJNPPbeO3CiQ2d8JgPxEINpr2oNMWPh#scrollTo=OdTtUegmPnf2
pip install opencv-python
pip install opencv-contrib-python #img_hash in this one
在这里,我将向您展示如何使用 OpenCV 计算 64 位 pHash。
我定义了一个函数,该函数 returns 来自彩色 BGR cv2 图像的无符号 64 位整数 pHash 传入:
import cv2
def pHash(cv_image):
imgg = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY);
h=cv2.img_hash.pHash(imgg) # 8-byte hash
pH=int.from_bytes(h.tobytes(), byteorder='big', signed=False)
return pH
您需要安装并导入 cv2 才能运行。
我想使用来自 Python 的 OpenCV 的 perceptual hashing functions。
这是行不通的。
import cv2
a_1 = cv2.imread('a.jpg')
cv2.img_hash_BlockMeanHash.compute(a_1)
我得到:
TypeError: descriptor 'compute' requires a 'cv2.img_hash_ImgHashBase' object but received a 'numpy.ndarray'
这也是失败的
a_1_base = cv2.img_hash_ImgHashBase(a_1)
cv2.img_hash_BlockMeanHash.compute(a_1_base)
我得到:
TypeError: Incorrect type of self (must be 'img_hash_ImgHashBase' or its derivative)
显示以下内容的 Colab 笔记本:
https://colab.research.google.com/drive/1x5ZxMBD3wFts2WKS4ip3rp4afDx0lGhi
这是 OpenCV python 接口与 C++ 接口的常见兼容性差距(即 类 不会以相同的方式相互继承)。有 *_create()
静态函数。
所以你应该使用:
hsh = cv2.img_hash.BlockMeanHash_create()
hsh.compute(a_1)
在您的协作笔记本副本中: https://colab.research.google.com/drive/1CLJNPPbeO3CiQ2d8JgPxEINpr2oNMWPh#scrollTo=OdTtUegmPnf2
pip install opencv-python
pip install opencv-contrib-python #img_hash in this one
在这里,我将向您展示如何使用 OpenCV 计算 64 位 pHash。 我定义了一个函数,该函数 returns 来自彩色 BGR cv2 图像的无符号 64 位整数 pHash 传入:
import cv2
def pHash(cv_image):
imgg = cv2.cvtColor(cv_image, cv2.COLOR_BGR2GRAY);
h=cv2.img_hash.pHash(imgg) # 8-byte hash
pH=int.from_bytes(h.tobytes(), byteorder='big', signed=False)
return pH
您需要安装并导入 cv2 才能运行。