模板匹配错误

时间:2018-04-06 03:25:17

标签: python python-2.7 opencv image-processing iris-recognition

我正在尝试使用Python制作虹膜扫描仪并打开CV。使用模板匹配功能时,我收到以下错误:

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

1 个答案:

答案 0 :(得分:1)

imread默认将图像文件读取为BGR彩色图像。所以img1是BGR彩色图像,而边缘是灰度。

您无法在BRG彩色图像和灰度模板之间进行模板匹配。数学上没有意义。

将颜色像素视为3d空间中的点。现在标量5与点(3,4,1)有多相似?

OpenCV手册实际上非常清楚。他们甚至给出用于计算结果的公式......

https://docs.opencv.org/2.4/modules/imgproc/doc/object_detection.html?highlight=matchtemplate#matchtemplate

  

在彩色图像的情况下,分子和中的模板求和   分母中的每个总和都在所有通道上完成   每个通道使用单独的平均值。就是这个功能   可以采用颜色模板 颜色图片。