Я пытаюсь сделать сканер радужной оболочки глаза на Python и открыть резюме. При использовании функции сопоставления шаблонов я получаю следующую ошибку:
import cv2
import numpy as np
img1 = cv2.imread('canny.jpg');
img2 = cv2.imread('frame1.jpg');
edges=cv2.Canny(img2,100,100)
w,h=edges.shape[::-1]
res = cv2.matchTemplate(img1 , edges, cv2.TM_CCOEFF_NORMED)
threshold = 0.8
loc = np.where(res >= threshold)
print loc
Ниже приводится ошибка:
Traceback (most recent call last):
File "E:/OpenCV Programs/threshold2img1.py", line 9, in <module>
res = cv2.matchTemplate(img1 , edges, cv2.TM_CCOEFF_NORMED)
error: OpenCV(3.4.1) C:\build\master_winpack-bindings-win32-vc14-static\opencv\modules\imgproc\src\templmatch.cpp:1102: error: (-215) (depth == 0 || depth == 5) && type == _templ.type() && _img.dims() <= 2 in function cv::matchTemplate
это потому, что вы используете изображения разной формы. острый край имеет форму (m, n), в то время как img1 имеет форму (m, n, 3)
Я не уверен, как вам вообще пришла в голову идея, что это может сработать, кстати. очень маловероятно, что вы получите какие-либо хорошие результаты, используя этот вид сопоставления шаблонов на хитрых изображениях глаз. вы вообще знаете, что делает эта функция?






imread по умолчанию считывает файлы изображений как цветные изображения BGR. Итак, img1 - это цветное изображение BGR, а край - в оттенках серого.
Вы не можете выполнить сопоставление шаблонов между цветным изображением BRG и шаблоном в оттенках серого. Математически это не имеет смысла.
Думайте о цветных пикселях как о точках в трехмерном пространстве. Теперь насколько скаляр 5 похож на точку (3,4,1)?
Руководство OpenCV на самом деле довольно ясно об этом. Они даже приводят формулы, по которым вычисляются результаты ...
In case of a color image, template summation in the numerator and each sum in the denominator is done over all of the channels and separate mean values are used for each channel. That is, the function can take a color template and a color image.
настолько срочно, что у вас нет времени вводить сообщение об ошибке в веб-поиск, например в Google? решений масса ....