Я создаю код, который скажет мне, насколько похожи две буквы друг на друга.
Для этого я решил использовать концепцию HuMoments
в OpenCV.
Приведены изображения, которые у меня есть
Co.jpg
C0.jpg
A.jpg
A.jpg
Colorado.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? Обратите внимание, что значение ближе к нулю означает наиболее близкое совпадение.