我一直试图使用opencv的模板匹配功能来匹配图像中的模板。然而,当图像是深棕色和深绿色时,模板匹配效果并不好。我很确定这是由灰色尺度的转换造成的,因为在灰度中,它看起来非常相似。
然而,据我所见,cv2匹配模板()只接收灰度图像。如何进行彩色模板匹配?我是否应该将RGB图像分割成3幅图像:一幅红色、一幅绿色、一幅蓝色,并将每幅图像作为灰度图像,然后应用匹配模板,然后将每个像素位置的相似性等级相加?就是这样吗?或者,是否有不同的函数或参数值可以用来使匹配模板为彩色图像工作?
发布于 2022-06-17 07:18:03
您可以尝试以下代码:
import numpy as np
import cv2
threshold = 0.8
##Read Main and Needle Image
imageMainRGB = cv2.imread(main/Image/Path/main.png)
imageNeedleRGB = cv2.imread(needle/Image/Path/needle.png)
##Split Both into each R, G, B Channel
imageMainR, imageMainG, imageMainB = cv2.split(imageMainRGB)
imageNeedleR, imageNeedleG, imageNeedleB = cv2.split(imageNeedleRGB)
##Matching each channel
resultB = cv2.matchTemplate(imageMainR, imageNeedleR, cv2.TM_SQDIFF)
resultG = cv2.matchTemplate(imageMainG, imageNeedleG, cv2.TM_SQDIFF)
resultR = cv2.matchTemplate(imageMainB, imageNeedleB, cv2.TM_SQDIFF)
##Add together to get the total score
result = resultB + resultG + resultR
loc = np.where(result >= 3 * threshold)
print("loc: ", loc)
我测试的图像是:
main.png
needle.png
result.png
备注:此代码在某些照片中可能不起作用,用户可能需要对其进行进一步修改以增强其功能。
注意:这张图片是从pexels.com获得的,它是免费版权的。如果您对图片版权有任何问题,并想记下此图片,欢迎与我联系。谢谢。
https://stackoverflow.com/questions/53574738
复制相似问题