Numpy 如何在opencv中使用颜色进行模板匹配?

Numpy 如何在opencv中使用颜色进行模板匹配?,numpy,opencv,computer-vision,Numpy,Opencv,Computer Vision,我一直在尝试使用opencv的模板匹配功能来匹配图像中的模板。但是,当图像为深棕色和深绿色时,模板匹配效果不佳。我很确定是灰度转换造成的,因为在灰度中它看起来非常相似 然而,从我看到的情况来看,cv2.matchtemplate()只接收灰度图像。如何进行彩色模板匹配?我是否应该将RGB图像分为3个图像:一个红色、一个绿色、一个蓝色,并将每个图像视为灰度图像,应用matchtemplate,然后对每个像素位置的相似性评级求和?这样做吗?或者,我是否可以使用不同的函数或参数值使matchtempl

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


然而,从我看到的情况来看,cv2.matchtemplate()只接收灰度图像。如何进行彩色模板匹配?我是否应该将RGB图像分为3个图像:一个红色、一个绿色、一个蓝色,并将每个图像视为灰度图像,应用matchtemplate,然后对每个像素位置的相似性评级求和?这样做吗?或者,我是否可以使用不同的函数或参数值使matchtemplate适用于彩色图像?

您自己的建议似乎足够好,可以执行。你可以把它们加起来或乘起来。将它们相加意味着对象需要满足任何RGB条件,将它们相乘意味着对象需要满足所有RGB条件,这实际上是一个非常有用的点。仅根据上述建议,它可能没有在库中实现的部分原因是,颜色之间的“距离”有不同的度量,这取决于你所处的颜色空间——如果它有三个通道图像,它可能只是求和它们或L2范数或其他东西,但这对颜色来说不是一个很好的距离度量。因此,这取决于实现者的颜色空间。但是你绝对可以尝试求和,取平方和的sqrt,等等。所有这些都应该可以很好地工作。这是一个非常好的观点,对于用户来说很容易实现。colorMatchtemplate:这里有一个例子