cv2.createShapeContextDistanceExtractor всегда возвращает 0.0

Я хочу вычислить расстояние между двумя фигурами, используя расстояние Хаусдорфа или меру контекста формы с помощью cv2. Фигуры - это простые белые фигуры на черном фоне.

Чтобы найти расстояние между двумя фигурами, я нахожу контуры каждой фигуры, а затем передаю контуры следующим функциям: ShapeDistanceExtractor::computeDistance(contours1, countours2) и HausdorffDistanceExtractor::computeDistance(contours1, countours2).

Не могли бы вы объяснить, почему во время сравнения ShapeDistanceExtractor всегда возвращает 0.0, тогда как второй метод дает мне разные результаты в зависимости от положения символа на изображении?

import cv2
a = cv2.imread("1.png",0);
b = cv2.imread("2.png",0);

_, ca, _ = cv2.findContours(a, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_TC89_KCOS) 
_, cb, _ = cv2.findContours(b, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_TC89_KCOS) 
print np.shape(ca[0]) , np.shape(cb[0])

hd = cv2.createHausdorffDistanceExtractor()
sd = cv2.createShapeContextDistanceExtractor()

d1 = hd.computeDistance(ca[0],cb[0])
d2 = sd.computeDistance(ca[0],cb[0])

print d1, " ", d2

1 ответ

ИСПРАВЛЕНО со следующим обновлением.

Другие вопросы по тегам