введите описание изображения здесь
привет, я хочу рассчитать периметр контура. Но теперь я действительно запутался в результатах функции opencv cv2.arcLength (). На самом деле на картинке в основном только один контур. Тем не менее, результат показывает, что периметр возвращается от cv2.arclength()
почти вдвое больше, чем должен быть контур? что тут может быть не так? Спасибо!
Периметр контура: count Пиксель: 43
, cv2.arcLength: 95
Вот мой код ниже:
cnt = self._get_contours(new_roi)
if len(cnt) >1:
container = []
for c in cnt:
length = cv2.arcLength(c, closed = False)
container.append(length)
max_length = max(container)
real_cnt = dict(zip(container, cnt)).get(max_length)
filterded_new_roi = np.zeros(new_roi.shape, dtype = np.uint8)
cv2.drawContours(filterded_new_roi, [real_cnt], -1, 255, 1)
plt.imshow(filterded_new_roi, cmap= 'gray')
plt.show()
new_roi = filterded_new_roi[:]
labeled_roi = label(new_roi)
unique, counts = np.unique(labeled_roi, return_counts=True)
# 0 black always the most
d = dict(zip(unique, counts))
print(d)
l = cv2.arcLength(cnt[0], True)
print('Contour Perimeter: count Pixel: %d, cv2.arcLength: %d' % (counts[1], int(l)))