Найти центр контура
Есть код по определению контура фигуры, по этому контуру нужно найти центр этой фигуры. Вот что я написал, но оно работает неправильно
import sys
import numpy as np
import cv2 as cv
if __name__ == '__main__':
fn = './out/0_1.png' # путь к файлу с картинкой
img = cv.imread(fn)
gray = cv.cvtColor( img, cv.COLOR_BGR2GRAY ) # меняем цветовую модель с BGR на HSV
ret, thresh = cv.threshold(gray, 127, 255, cv.THRESH_BINARY)
# ищем контуры и складируем их в переменную contours
contours, hierarchy = cv.findContours(thresh.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
moments = []
for point in contours:
M = cv.moments(point)
try:
centroid_x = int(M['m10']/M['m00'])
except Exception:
centroid_x = 0
try:
centroid_y = int(M['m01']/M['m00'])
except Exception as e:
centroid_y = 0
moments.append(np.array([centroid_x, centroid_y]))
moments = np.array(moments)
center = (int(np.mean(moments[:, 0])), int(np.mean(moments[:, 1])))
# отображаем контуры поверх изображения
cv.circle(img, center, 5, (0, 255, 0), -1)
cv.imshow('contours', img) # выводим итоговое изображение в окно
cv.waitKey()
cv.destroyAllWindows()