赞
踩
NORMED的意思就是结果范围在[-1, 1]之间
cv2.TM_SQDIFF, cv2.TM_SQDIFF_NORMED: `0 为最优,越大越差`,值越小越好
cv2.TM_CCORR, cv2.TM_CCORR_NORMED, cv2.TM_CCOEFF, cv2.TM_CCOEFF_NORMED: `越大越好`
如果你使用的是 TM_SQDIFF 方法,那么确实需要使用灰度图像。这是因为 TM_SQDIFF 方法计算的是图像差异的平方和,而不是相关性。在这种情况下,你需要确保模板图像和待匹配图像都是灰度图像,以便正确计算差异。 如果你使用的是其他匹配方法(例如 TM_CCORR 或 TM_CCOEFF),则可以使用彩色图像。这些方法计算的是相关性或相关系数,而不涉及差异的平方和。
cv2.imread
是 OpenCV 中用于从指定文件加载图像的函数。第二个参数 flag
决定了图像的读取方式。在你提供的代码中,参数 0
表示将图像以灰度模式读取。
具体来说,这里的 0
对应以下标志:
cv2.IMREAD_GRAYSCALE
:它指定以灰度模式加载图像。这意味着图像将被转换为单通道的灰度图像,每个像素的值在 0 到 255 之间,表示图像的亮度。这对于处理灰度图像或进行模板匹配等任务非常有用。如果你想加载彩色图像,可以使用以下标志之一:
cv2.IMREAD_COLOR
:加载彩色图像,忽略图像的透明度。这是默认标志,也可以用整数值 1
表示。cv2.IMREAD_UNCHANGED
:加载图像,包括透明通道(如果有的话)。这对于处理带有 alpha 通道的图像很有用,也可以用整数值 -1
表示。- # method: TM_SQDIFF, 用minVal
- import cv2
- import numpy as np
- import matplotlib.pyplot as plt
-
- cat = cv2.imread('./aaaa.jpg', 0)
- template = cv2.imread('./template.png', 0)
-
- th, tw = template.shape[::]
-
- rv = cv2.matchTemplate(cat, template, cv2.TM_SQDIFF)
-
- minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(rv)
-
- topLeft = minLoc
- bottomRight = (topLeft[0] + tw, topLeft[1] + th)
- cv2.rectangle(cat, topLeft, bottomRight, 255, 2)
-
- plt.subplot(121), plt.imshow(rv, cmap='gray')
- plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
- plt.subplot(122), plt.imshow(cat, cmap='gray')
- plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
- plt.show()
- TM_CCOEFF 方法, 越大越好,用maxVal
- import cv2
- import numpy as np
- import matplotlib.pyplot as plt
-
- cat = cv2.imread('./cats.jpg', 0)
- template = cv2.imread('./tongue.png', 0)
- tw, th = template.shape[::-1]
- rv = cv2.matchTemplate(cat, template, cv2.TM_CCOEFF)
-
- minVal, maxVal, minLoc, maxLoc = cv2.minMaxLoc(rv)
- topLeft = maxLoc
-
- bottomRight = (topLeft[0] + tw, topLeft[1] + th)
- cv2.rectangle(cat, topLeft, bottomRight, 255, 2)
-
- plt.subplot(121), plt.imshow(rv, cmap='gray')
- plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
- plt.subplot(122), plt.imshow(cat, cmap='gray')
- plt.title('Detected Point'), plt.xticks([]), plt.yticks([])
- plt.show()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。