OpenCV颜色模板匹配而不是灰度?也是一般的模板疑难解答。((Python)

问题描述 投票:4回答:1

根据问题标题。我正在尝试在一组场景中找到一组模板。除了图像质量问题,模板图像的背景和大小差异之外,模板化对象的图像在图像中的显示方式完全相同。假设给定一组空白背景的新闻台徽标模板图像,则将其视为在新闻镜头中找到Fox新闻徽标。在新闻镜头中,徽标具有自然的图像背景。

我已经使用类似于this link的方法实现了多尺度模板匹配。但是,我没有得到很好的结果。我使用模板的Canny边缘表示形式,并使用cv2.matchTemplate。对于每个模板,我在图像中找到该特定模板的最高分,然后选择返回最高分作为正确结果的模板。我尝试了模板匹配器可用的每个指标,但结果仍然很差。

我认为颜色信息也可能有用,但是OpenCV中不包括RGB模板匹配。我曾考虑过按通道进行操作,但是如果每个通道获得不同的结果,我将不知道如何协调该模板的位置和得分。

有什么想法吗?

python opencv opencv3.1
1个回答
0
投票

您正在参考的教程将Canny Edge检测作为模板匹配的初步步骤,您不必完全遵循此示例。 您可以将3层图像传递给匹配模板功能。无需将图像分成3层。

参考链接示例中的代码,您可以简单地省略将图像转换为灰度的步骤。

for imagePath in glob.glob(args["images"] + "/*.jpg"):
    # load the image, convert it to grayscale, and initialize the
    # bookkeeping variable to keep track of the matched region
    image = cv2.imread(imagePath)
    #remove the following line
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    found = None

openCV中的matchTemplate功能不需要模板为灰度。您可以将RGB模板传递给该函数。

请参阅:https://docs.opencv.org/4.1.2/df/dfb/group__imgproc__object.html#ga586ebfb0a7fb604b35a23d85391329be

我个人使用RGB图像进行模板匹配,有时会有明显的色差影响我的结果,但是通常使用颜色模板对我来说效果很好。从理论上讲,如果您要寻找徽标,应该会改善您的结果。

© www.soinside.com 2019 - 2024. All rights reserved.