2015-09-04 4 views
1

Я хотел бы получить маску изображения из контура (она существует только один контур) Я вычислил благодаря cv.findContours.получить маску из контура с OpenCV

Однако, в то время как моя переменная контур не пуст, не удается получить маску изображения, используя cv.drawContours, мое конечное изображение не всегда пустой.

Вот мой код:

img = mosaicImage[:,:,0].astype('uint8') 
contours, _ = cv.findContours(img.copy(), cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) 
mask = np.zeros(img.shape, np.uint8) 
cv.drawContours(mask, contours, -1, (0,255,0),1) 

Я надеюсь, что вы могли бы помочь!

Благодаря

+0

маска - одиночный канал. вы пытаетесь установить канал 2 ... попробуйте cv.drawContours (маски, контуры, -1, (255), 1) – Micka

+0

Если вы создаете маску, вы хотите, чтобы заполнить контуры? Вы можете это сделать, изменив последний параметр на drawContours с 1 на -1 – jjinking

ответ

1

вы устанавливаете цвет (0,255,0) к маске, но маска одноканальная так вы рисуете контур в цвете 0.

попробовать

cv.drawContours(mask, contours, -1, (255),1) 

или

cv.drawContours(mask, contours, -1, (255,255,255),1) 
Смежные вопросы