2013-10-07 7 views
2

У меня есть двоичный файл с полилиниями, созданных с помощью:заполнение контуров с OpenCV питоном

cv2.polylines(binaryImage,contours,1, (255,255,255)) 

Что мне нужно сейчас это эффективный метод, чтобы заполнить все полилинии. Я не нашел такой метод в opencv, но, возможно, он существует. В качестве альтернативы, возможно, я мог бы реализовать алгоритм для выполнения задания (но быстро один - у меня есть готовые HD-изображения). Поделитесь своими мыслями ..

ответ

6

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

import numpy as np 
import cv2 

contours = np.array([ [50,50], [50,150], [150, 150], [150,50] ]) 
img = np.zeros((200,200)) # create a single channel 200x200 pixel black image 
cv2.fillPoly(img, pts =[contours], color=(255,255,255)) 
cv2.imshow(" ", img) 
cv2.waitKey() 

enter image description here

1

Вы можете использовать drawContours с установленным флагом, как FILLED:

(код находится в Java)

Imgproc.drawContours(mat, contours, contourID, COLOR, Core.FILLED); 

Вы дать идентификатор нужного контура и цвет, который вы хотите, чтобы он был заполнен.

4

При использовании функции «cv2.drawContours» отправьте толщину = cv2.FILLED, и все готово.

Смежные вопросы