Предварительная обработка изображения для findContours - PullRequest
0 голосов
/ 23 октября 2019

Я пытаюсь определить контуры флага на фоне с помощью

canny = cv2.Canny(np.asarray(out_gray), 50, 200)
_, contours, _ = cv2.findContours(canny.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cv2.drawContours(image=out, contours=contours, contourIdx=-1, color=(255, 0, 0), thickness=20)
plt.imshow(out)
plt.show()

Но так как получаю нежелательный результат.

enter image description here

Каков наилучший подход к предварительной обработке изображения для поиска контуров?

1 Ответ

0 голосов
/ 23 октября 2019

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

import cv2
import numpy as np

img = cv2.imread('flag.png')
img = cv2.resize(img, (1200, 700)) # <---- resize here!
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

canny = cv2.Canny(np.asarray(gray), 0, 200)

_, contours, _ = cv2.findContours(canny.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)


cv2.drawContours(image=img, contours=contours, contourIdx=-1, color=(255, 255, 0), thickness=5)

cv2.imshow('asd', img)
cv2.waitKey(0)

Вывод:

enter image description here

Canny изображение сизменить размер:

enter image description here

Канны изображения без изменения размера:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...