给定大图,截取小图,并读取图片。
import cv2
img=cv2.imread('0.png')
pic=cv2.imread('1.png')
请点击图片,查看大图效果。
要是把图片直接读取为灰度图,可以节流计较时间:
import cv2
img=cv2.imread('0.png',0)
pic=cv2.imread('1.png',0)
原图是没有右下角的水印的。
这里只给出模版匹配的最初等的要领,把模版放到原图,逐点移动,直到找准最佳匹配位置。
先给出一个计数器,用来记载差别位置的匹配效果。
import numpy as np
u,v=img.shape[:2]
p,q=pic.shape[:2]
c=np.zeros((u-p,v-q))
用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秒。
计数器内里,最小值的位置,就是最佳匹配位置。
上图中有一个玄色点,就是最佳匹配点。
for i in range(u-p):
for j in range(v-q):
if c[i,j]==np.min(c):
print(i,j)
在原图中标注出模版的位置:
img=cv2.imread('0.png')
cv2.rectangle(img,(50,201),(50+q,201+p),(0,0,255),2)
cv2.imwrite('4.jpg',img)
END0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!