2012-07-14 879 views
2

我有一个图像,我使用OpenCV来查找该图像中的轮廓。例如:OpenCV:将不规则形状的轮廓内部设置为颜色

contours, hierarchy = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) 

返回的每个轮廓有时非常不规则。例如,其中一个的返回是:

contour = [[[34 4]] 
[[35 3]] 
[[36 4]] 
[[36 11]] 
[[35 12]] 
[[34 11]] 
[[34 6]] 
[[33 6]] 
[[32 5]] 
[[33 4]]] 

我想将此轮廓的内部设置为特定的颜色。我已经尝试使用cv2.BoundingRect来获得这个轮廓的边界矩形,然后使用它来设置颜色,但是,我想要一个更精确的方法来使用实际轮廓来做到这一点。

是否有一种直接的方式通过OpenCV提供的函数或通过NumPy来完成此操作?

回答

2

使用cv2.drawContours()lineType = -1标志(Docs

例如功能:cv2.drawContours(IMG,[CNT],0,颜色,-1)#特定轮廓的内侧填充

cv2.drawContours(IMG,轮廓,-1,颜色,-1)#来填充所有的轮廓内部在单一步骤

欲了解更多详情,请访问:Contours -1 : Getting Started