Извлечь контурную область из изображения
У меня есть несколько вопросов о сегментации контурного изображения. Например, я получил изображение кабеля и могу создать контур этого изображения с порогом и функцией 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 ответ
Вы можете получить площадь внутри некоторого "контура" многоугольника, используя формулу шнурка
Идея состоит в том, чтобы вычислить их постепенно, суммируя / вычитая площадь между сторонами многоугольника и на оси, после одного полного цикла, хотя контур многоугольника, который вы получаете в результате суммирования / вычитания, будет площадью внутри многоугольника
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
для питона