Я прошу прощения, если я публикую в неправильном месте. Пожалуйста, дайте мне знать, если это так. В противном случае, я ценю любую помощь или указание.
У меня есть изображение объекта на фоне, который я хотел бы предварительно обработать, чтобы иметь только интересующую область. Я выполнил некоторую предварительную обработку, такую как обрезка и усиление контраста, но теперь я хочу установить цвет фона solid. Я использую canny для генерации контурной линии между краем объекта и фона следующим образом:
Теперь мне интересно, могу ли я каким-то образом использовать эту длинную линию посередине в качестве границы маски, которая будет покрывать все, что находится ниже указанной линии. Каждый пример, который я видел на этом сайте и в других местах, всегда использует контуры Канни, которые являются замкнутыми геометрическими c формами (такими как квадраты, круги и т. Д. c.)
Я пытался захватить контур с самой большой областью (в надежде, что он захватит верхнюю или нижнюю половину) следующим образом:
cnts = cv2.findContours(img_edge_top.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:10]
contour = max(cnts, key = cv2.contourArea)
cv2.drawContours(img_blur_top, [contour], -1, (0, 255, 0), 3)
cv2.imshow("contour", img_edge_top)
cv2.waitKey(0)
Ниже показано исходное изображение:
Достаточно указать точку в правильном направлении или аналогичный пример. Спасибо