Использование модуля хеширования изображений OpenCV из Python - PullRequest
4 голосов
/ 15 апреля 2019

Я хочу использовать воспринимающие хеш-функции OpenCV из Python.

Это не работает.

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

Ответы [ 2 ]

4 голосов
/ 21 апреля 2019

Это общий пробел в совместимости, который есть у интерфейса Python OpenCV с интерфейсом C ++ (то есть классы не наследуются друг от друга одинаково). Для этого есть статические функции *_create().

Так что вы должны использовать:

hsh = cv2.img_hash.BlockMeanHash_create()
hsh.compute(a_1)

В копии вашей записной книжки: https://colab.research.google.com/drive/1CLJNPPbeO3CiQ2d8JgPxEINpr2oNMWPh#scrollTo=OdTtUegmPnf2

0 голосов
/ 16 июля 2019
pip install opencv-python
pip install opencv-contrib-python    #img_hash in this one 

(https://pypi.org/project/opencv-python/)

...