Python文档阅读笔记-OpenCV中Match Shapes

Posted IT1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python文档阅读笔记-OpenCV中Match Shapes相关的知识,希望对你有一定的参考价值。

OpenCV使用cv2.matchShapes()用来对比2个图像是否相似。返回值越低说明2张图片越相似。这个是基于hu-moment值算出来的。

代码如下:

import cv2
import numpy as np

img1 = cv2.imread('star.jpg',0)
img2 = cv2.imread('star2.jpg',0)

ret, thresh = cv2.threshold(img1, 127, 255,0)
ret, thresh2 = cv2.threshold(img2, 127, 255,0)
contours,hierarchy = cv2.findContours(thresh,2,1)
cnt1 = contours[0]
contours,hierarchy = cv2.findContours(thresh2,2,1)
cnt2 = contours[0]

ret = cv2.matchShapes(cnt1,cnt2,1,0.0)
print ret

如下测试图:

 

结果为:

A图形匹配自身体结果为0.0

A图形匹配B图形结果为0.001946

A图形匹配C图形结果为0.326911

相关解析:

①threshold(img, threshold, maxval, type):

        Ⅰ:threshold设定的阈值;

        Ⅱ:maxval当灰度值大于(或小于)阈值时将该灰度赋值成的值;

        Ⅲ:type规定的是当前二值化的方式。

②findContours():查找轮廓,第一个参数是输入图像,第二个参数是轮廓检索模式,第三参数是轮廓近似方法。

以上是关于Python文档阅读笔记-OpenCV中Match Shapes的主要内容,如果未能解决你的问题,请参考以下文章

Python文档阅读笔记-Number Plate Recognition with OpenCV and EasyOCR

Python文档阅读笔记-Turn Images into Cartoons using Python

Python文档阅读笔记-Turn Images into Cartoons using Python

Python文档阅读笔记-Turn Images into Cartoons using Python

使用Python+OpenCV进行图像模板匹配(Match Template)

使用Python+OpenCV进行图像模板匹配(Match Template)