我正在创建一个代码,它将告诉我两个字母彼此有多相似。
为此,我决定使用OpenCV中的HuMoments
概念。你知道吗
这是我的照片
你知道吗公司.jpg C0.jpg
A.jpg公司 A.jpg
你知道吗科罗拉多.jpg Colorado.jpg
我使用以下方法阅读图像:
im5 = cv2.imread("images/C0.jpg",cv2.IMREAD_GRAYSCALE)
im7 = cv2.imread("images/Colorado.jpg",cv2.IMREAD_GRAYSCALE)
im9 = cv2.imread("images/A.jpg",cv2.IMREAD_GRAYSCALE)
我正在使用cv2.matchShapes
属性来匹配:
m6 = cv2.matchShapes(im5, im7, cv2.CONTOURS_MATCH_I2,0)
m8 = cv2.matchShapes(im5, im9, cv2.CONTOURS_MATCH_I2,0)
最后我打印输出:
print("C0.png and Colorado.png : {}".format(m6))
print("C0.png and A.jpg : {}".format(m8))
这里最接近零(0)的值表示完全匹配
我的输出:
$ python3 shapeMatcher.py
Shape Distances Between
-------------------------
C0.png and Colorado.png : 0.10518804385516889
C0.png and A.jpg : 0.0034705987357361856
C0和CO不匹配,显示正确。唯一让我困惑的是C0.jpg和A.jpg怎么会是一场势均力敌的比赛?如果我遗漏了什么,有什么方法可以得到C0和a之间的不匹配?请注意,值接近零表示最接近匹配。你知道吗
根据the documentation,
cv2.matchShapes
需要轮廓作为输入,而不是图像。你知道吗This tutorial有一个示例用法:
(注意
findContours
语法从opencv2更改为opencv3。)相关问题 更多 >
编程相关推荐