【发布时间】:2019-10-29 15:39:36
【问题描述】:
我正在创建一个代码,它将告诉我两个字母彼此之间的相似程度。
为此,我决定使用 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 和 Colorado 不匹配,可以正确显示。令我困惑的一件事是 C0.jpg 和 A.jpg 是如何紧密匹配的?我是否遗漏了什么,使 C0 和 A 不匹配的另一种方法是什么?请注意,接近零的值意味着最接近的匹配。
【问题讨论】:
标签: python opencv image-processing machine-learning computer-vision