作者:王彦平

\n

本篇文章介绍使用Python和OpenCV对图像进行模板匹配和识别。模板匹配是在图像中寻找和识别模板的一种简单的方法。以下是具体的步骤及代码。

\n

首先导入所需库文件,numpy和cv2。

\n
#导入所需库文件\r\nimport cv2\r\nimport numpy as np
\n

然后加载原始图像和要搜索的图像模板。OpenCV对原始图像进行处理,创建一个灰度版本,在灰度图像里进行处理和查找匹配。然后使用相同的坐标在原始图像中进行还原并输出。

\n
#加载原始RGB图像\r\nimg_rgb = cv2.imread("photo.jpg")\r\n#创建一个原始图像的灰度版本,所有操作在灰度版本中处理,然后在RGB图像中使用相同坐标还原\r\nimg_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)\r\n \r\n#加载将要搜索的图像模板\r\ntemplate = cv2.imread('face.jpg',0)\r\n#记录图像模板的尺寸\r\nw, h = template.shape[::-1]
\n

这里我们分别输出并查看原始图像,原始图像的灰度版本,以及图像模板。

\n

\n

\n

\n
#查看三组图像(图像标签名称,文件名称)\r\ncv2.imshow('rgb',img_rgb)\r\ncv2.imshow('gray',img_gray)\r\ncv2.imshow('template',template)\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()
\n

使用matchTemplate在原始图像中查找并匹配图像模板中的内容,并设置阈值。

\n
#使用matchTemplate对原始灰度图像和图像模板进行匹配\r\nres = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)\r\n#设定阈值\r\nthreshold = 0.7\r\n#res大于70%\r\nloc = np.where( res >= threshold)
\n

匹配完成后在原始图像中使用灰度图像的坐标对原始图像进行标记。

\n
#使用灰度图像中的坐标对原始RGB图像进行标记\r\nfor pt in zip(*loc[::-1]):\r\n    cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7,249,151), 2)\r\n#显示图像    \r\ncv2.imshow('Detected',img_rgb)\r\ncv2.waitKey(0)\r\ncv2.destroyAllWindows()
\n

\n

以下为完整代码:

\n
def mathc_img(image,Target,value):\r\n    import cv2\r\n    import numpy as np\r\n    img_rgb = cv2.imread(image)\r\n    img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)\r\n    template = cv2.imread(Target,0)\r\n    w, h = template.shape[::-1]\r\n    res = cv2.matchTemplate(img_gray,template,cv2.TM_CCOEFF_NORMED)\r\n    threshold = value\r\n    loc = np.where( res >= threshold)\r\n    for pt in zip(*loc[::-1]):\r\n        cv2.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (7,249,151), 2)   \r\n    cv2.imshow('Detected',img_rgb)\r\n    cv2.waitKey(0)\r\n    cv2.destroyAllWindows()
\n
\n
image=("photo.jpg")\r\nTarget=('face.jpg')\r\nvalue=0.9\r\nmathc_img(image,Target,value)
\n
\n

Read more: https://bluewhale.cc/2017-09-22/use-python-opencv-for-image-template-matching-match-template.html#ixzz4tOICUBm9

\n

End.

\n

转载请注明来自36大数据(36dsj.com):36大数据 » 使用Python+OpenCV进行图像模板匹配(Match Template)

是白的 我是一个勤奋的爬虫~~
{{uname}}

{{meta.replies}} 条回复
写下第一个评论!

-----------到底了-----------