Дан документ (допустим, что он распечатан, а не нарисован как у меня тут)
Код написан так, что он находит контур границы объекта, но площадь или точки взять я не могу.
Вот итог того, что у меня получилось сделать
Мне нужно рассчитать площадь этой фигуры... В голову первым делом пришла формула Пика, но чтоб её надо сделать, надо построить на А4 листе клетку с размером 1см (точность не столь важна, как результат). Далее по формуле S=L+ (B/2) -1 можно будет рассчитать площадь фигуры, где L- это точки внутри фигуры, а B- точки на контуре фигуры.
Так же как я понял можно посчитать как то точки внутри объекта через функцию cv.floodfill, но его я освоить не смог. Кто может мне написать этот код? Я уже без понятия, я только начал изучать OpenCV (3.7), но инструкций таких очень мало, только теорию нахожу, которая никак не относиться к моей задаче
#мой код
import numpy as np
import cv2 as cv
import imutils
import cv2
# параметры цветового фильтра
hsv_min = np.array((0, 54, 5), np.uint8)
hsv_max = np.array((187, 255, 253), np.uint8)
img = cv.imread("C:\\45\\000.jpg")
hsv = cv.cvtColor(img, cv.COLOR_BGR2HSV )
# меняем цветовую модель с BGR на HSV
thresh = cv.inRange(hsv, hsv_min, hsv_max )
# применяем цветовой фильтр
# ищем контуры и складируем их в переменную contours
contours, hierarchy = cv.findContours(thresh.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_NONE)
#попытка нарисовать хотябы линию на картинке (не работает)
c = max(contours, key = cv.contourArea)
M = cv2.moments(c)
if M["m00"] != 0:
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
print (cX,cY)
else:
cX, cY = 0,0
print (cX,cY)
# отображаем контуры поверх изображения
cv.drawContours(img, contours, -1, (255, 0, 0), 2, cv.LINE_AA, hierarchy, 0)
cv.imshow('contours', img)
cv.drawContours(img, contours, -1, (255, 0, 0), 2, cv.LINE_AA, hierarchy, 2)
# выводим итоговое изображение в окно
cv.imshow('All_con', img)
cv.imshow('thresh', thresh)
cv.waitKey()
cv.destroyAllWindows()