• OpenCV自学笔记十八:模板匹配


    模板匹配是一种在图像中寻找指定模式的方法。OpenCV库提供了用于模板匹配的函数,可以帮助我们在图像中定位和识别特定的模式。下面是模板匹配的基础原理和一个示例:

    模板匹配通过在待匹配图像上滑动一个固定大小的模板图像,并计算模板与图像之间的相似度来寻找匹配位置。相似度通常使用相关性或差异度量来衡量。在滑动过程中,当相似度达到最大值或阈值时,认为找到了一个匹配。

    下面是一个使用OpenCV进行模板匹配的示例代码:

    1. import cv2
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. # 读取主图像和模板图像
    5. img = cv2.imread('main_image.jpg', 0)
    6. template = cv2.imread('template_image.jpg', 0)
    7. # 进行模板匹配
    8. result = cv2.matchTemplate(img, template, cv2.TM_CCOEFF_NORMED)
    9. min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
    10. # 获取匹配位置
    11. top_left = max_loc
    12. bottom_right = (top_left[0] + template.shape[1], top_left[1] + template.shape[0])
    13. # 在主图像上绘制矩形框
    14. cv2.rectangle(img, top_left, bottom_right, 255, 2)
    15. # 显示结果
    16. plt.subplot(131), plt.imshow(img, cmap='gray')
    17. plt.title('Original Image'), plt.xticks([]), plt.yticks([])
    18. plt.subplot(132), plt.imshow(template, cmap='gray')
    19. plt.title('Template Image'), plt.xticks([]), plt.yticks([])
    20. plt.subplot(133), plt.imshow(result, cmap='gray')
    21. plt.title('Matching Result'), plt.xticks([]), plt.yticks([])
    22. plt.show()

    在上述示例中,我们首先使用`cv2.imread()`函数读取主图像和模板图像,并将它们转换为灰度图像。

    然后,使用`cv2.matchTemplate()`函数进行模板匹配。该函数接受三个参数:待匹配的主图像、模板图像和匹配方法。在本例中,我们使用了`cv2.TM_CCOEFF_NORMED`作为匹配方法。

    接下来,使用`cv2.minMaxLoc()`函数获取匹配结果中的最大值位置。这对应于找到的最佳匹配位置。

    然后,我们使用找到的匹配位置,在主图像上绘制矩形框。

    最后,使用Matplotlib库的`plt.subplot()`和`plt.imshow()`函数显示原始图像、模板图像和匹配结果图像。

    运行上述代码,你将看到显示了原始图像、模板图像和匹配结果的窗口。匹配结果中的矩形框表示找到的最佳匹配位置。

  • 相关阅读:
    ChatGPT Plus暂停注册,用户激增压力太大!
    @EqualsAndHashCode注解!!!
    集群规模:3 FE + 89 BE
    父子组件传递参数/默认插槽/具名插槽
    Hive-源码分析一条hql的执行过程
    java.lang.Float类下compare(float f1,float f2)方法具有什么功能呢?
    【使用教程】在Ubuntu下PMM60系列一体化伺服电机通过SDO跑循环同步位置模式详解
    搜索技术【广度优先搜索】 - 队列式广度优先搜索
    Linux中socket地址API
    tcpdump相关
  • 原文地址:https://blog.csdn.net/m0_71721954/article/details/133146068