Контуры изображения выглядят очень неаккуратно с помощью cv2 findContours.Как улучшить? - PullRequest
1 голос
/ 09 апреля 2019

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

У меня есть черно-белое изображение, которое я изменяю в цвет.

thresh = cv2.cvtColor(thresh, cv2.COLOR_RGB2GRAY) 
plt.imshow(thresh)

enter image description here

Далее я пытаюсь найти контуры.

image, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

и затем я визуализирую его, нанося его на черный фон.

blank_image = np.zeros((thresh.shape[0],thresh.shape[1],3), np.uint8) 
img = cv2.drawContours(blank_image, contours, 0, (255,255,255), 3)
plt.imshow(img)

Contour image

Контур следует фактическому контуру, то есть окружает все это. Как мне получить что-то вроде этого очень плохого впечатления от краски:

enter image description here

1 Ответ

1 голос
/ 09 апреля 2019

Вы можете использовать функцию обнаружения краев Canny, чтобы сделать это:

enter image description here

import cv2
frame = cv2.imread("iCyrOT3.png")                       # read a frame
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)          # turn it gray
edges = cv2.Canny(gray, 100, 200)                       # get canny edges
cv2.imshow('Test', edges)                               # display the result
cv2.waitKey(0)
...