【图像处理】基于python的模版匹配算法

本文来学习模版匹配的初等方法。从大图里面裁剪出一个小图片,然后要求在大图里面标注出小图的位置。

东西/原料

  • 电脑
  • python
  • opencv模块

要领/步调

  1. 1

    给定大图,截取小图,并读取图片。

    import cv2

    img=cv2.imread('0.png')

    pic=cv2.imread('1.png')

    请点击图片,查看大图效果。

    0d55dc7bd282868933207a0265f97fbd4d7c37fe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80a007a9b1eef97fbdda1af900b74133bad24133fe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  2. 2

    要是把图片直接读取为灰度图,可以节流计较时间:

    import cv2

    img=cv2.imread('0.png',0)

    pic=cv2.imread('1.png',0)

    原图是没有右下角的水印的。

    7efc527c34b33c41aadc1ef2887de137c8762efe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80d2001d7de137c976bcdab07644672b5fd4462bfe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  3. 3

    这里只给出模版匹配的最初等的要领,把模版放到原图,逐点移动,直到找准最佳匹配位置。

    先给出一个计数器,用来记载差别位置的匹配效果。

    import numpy as np

    u,v=img.shape[:2]

    p,q=pic.shape[:2]

    c=np.zeros((u-p,v-q))

    d4071b96b814f4d013650561cdfe474ec38323fe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  4. 4

    用for轮回举行匹配:

    for i in range(u-p):

        for j in range(v-q):

            n=img[i:p+i,j:q+j]-pic

            n=np.sum(n**2)

            c[i,j]=n

    这个历程用时间比力长,多达100秒。

    c3c22dbf3bef354ffede798d23db574afb321bfe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  5. 5

    计数器内里,最小值的位置,就是最佳匹配位置。

    上图中有一个玄色点,就是最佳匹配点。

    for i in range(u-p):

        for j in range(v-q):

            if c[i,j]==np.min(c):

                print(i,j)

    560be432939c2cf76ad411aa452c5b1b1fde12fe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80
  6. 6

    在原图中标注出模版的位置:

    img=cv2.imread('0.png')

    cv2.rectangle(img,(50,201),(50+q,201+p),(0,0,255),2)

    cv2.imwrite('4.jpg',img)

    5a5a00def4dca039af79035f58d96975f3c40dfe.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_auto%2Fquality%2Cq_80END
  • 发表于 2022-09-12 11:29
  • 阅读 ( 122 )
  • 分类:电脑网络

相关问题

0 条评论

请先 登录 后评论