首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在opencv中与颜色进行模板匹配?

如何在opencv中与颜色进行模板匹配?
EN

Stack Overflow用户
提问于 2018-12-01 20:23:57
回答 1查看 3.6K关注 0票数 2

我一直试图使用opencv的模板匹配功能来匹配图像中的模板。然而,当图像是深棕色和深绿色时,模板匹配效果并不好。我很确定这是由灰色尺度的转换造成的,因为在灰度中,它看起来非常相似。

然而,据我所见,cv2匹配模板()只接收灰度图像。如何进行彩色模板匹配?我是否应该将RGB图像分割成3幅图像:一幅红色、一幅绿色、一幅蓝色,并将每幅图像作为灰度图像,然后应用匹配模板,然后将每个像素位置的相似性等级相加?就是这样吗?或者,是否有不同的函数或参数值可以用来使匹配模板为彩色图像工作?

EN

回答 1

Stack Overflow用户

发布于 2022-06-17 07:18:03

您可以尝试以下代码:

代码语言:javascript
运行
复制
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获得的,它是免费版权的。如果您对图片版权有任何问题,并想记下此图片,欢迎与我联系。谢谢。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53574738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档