Как устранить небольшие контурные области с помощью opencv - PullRequest
0 голосов
/ 31 марта 2020

Я попытался создать контурную карту в python с ошибкой, используя KNearestNeighbors в качестве метода интерполяции. Однако график вернулся как с несколькими небольшими контурными областями, которые я хочу устранить:

contour map generated

Я пытался использовать OpenCV, чтобы найти все вложенные контуры линий и установите граничное значение в качестве максимальной площади, затем удалите все области, меньшие, чем граничное значение.

Однако мне, похоже, не удалось использовать метод findContours, поскольку он обнаруживал только контуры вокруг разлома. Все остальные контуры не удалось представить. Полученный график и мой код выглядят следующим образом:

enter image description here

img = cv2.imread('contor_line.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)  
contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)  
cv2.drawContours(gray,contours,-1,(0,0,255),1)  
cv2.imshow("gray", gray)  
cv2.waitKey(0)

Я впервые использую OpenCV, поэтому спасибо за помощь.

1 Ответ

0 голосов
/ 31 марта 2020

Попробуйте использовать canny до того, как найдете контуры, или установите пороговое значение для своего изображения, что сделает поиск контуров проще и лучше.

...