Извлечь контурную область из изображения

У меня есть несколько вопросов о сегментации контурного изображения. Например, я получил изображение кабеля и могу создать контур этого изображения с порогом и функцией drawcontour с кодом внизу. Контурное изображение, пороговое изображение. Мои вопросы: я хочу извлечь этот кабель и прочитать код RGB. Любой совет может быть отличным! Благодарю.

    gray_image = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    ret, thresh_img = cv2.threshold(gray_image, trs, 255, cv2.THRESH_BINARY)
    im2, contours, hierarchy = cv2.findContours(thresh_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    cv2.drawContours(im2, contours, -1, red, cnt)
    cv2.imshow(winName, im2)

1 ответ

Ты можешь использовать cv2.contourArea(contours) больше информации здесь и здесь

Вы можете получить площадь внутри некоторого "контура" многоугольника, используя формулу шнурка

Идея состоит в том, чтобы вычислить их постепенно, суммируя / вычитая площадь между сторонами многоугольника и на оси, после одного полного цикла, хотя контур многоугольника, который вы получаете в результате суммирования / вычитания, будет площадью внутри многоугольника

j = numPoints-1       
for (uint_fast8_t i=0; i<numPoints; i++)
      {

        area = area +  (contour[j][0]+contour[i][0]) * (contour[j][1]-contour[i][1]);
        area1 = area1 +  (contour[j][0]*contour[i][1]) - (contour[j][1]*contour[i][0]); //different form for the formula
        j = i;  //j is previous vertex to i
      }

площадь = площадь /2; площадь1= площадь1/2; // знак площади зависит от направления вращения

https://en.wikipedia.org/wiki/Shoelace_formula

https://www.mathopenref.com/coordpolygonarea.html

https://www.mathopenref.com/coordpolygonarea2.html

для питона

https://www.101computing.net/the-shoelace-algorithm/

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