2016-01-01 184 views

回答

1

嘗試使用下面的一段代碼,用白色填充封閉對象。

cv::Mat edgesIn; 
cv::Mat edgesNeg =temp.clone(); 
// imshow("edgesNeg", edgesNeg); 
cv::floodFill(edgesNeg, cv::Point(0,0), CV_RGB(255,255,255)); 
imshow("edgesNeg", edgesNeg); 
bitwise_not(edgesNeg, edgesNeg); 
filledEdgesOut = (edgesNeg | temp); 
imshow("Filled region",filledEdgesOut); 
0

這是一個有趣的問題,我想我會用ImageMagick的嘗試在命令行,但您可以在技術適應OpenCV的容易就好了。我懷疑它可能類似於@阿俊的代碼所做的事情,但我無法輕鬆閱讀它...

我會在三個步驟中完成,每個步驟都建在最後一步,但實際上只需要最後,單線命令結束。

首先,洪水填充有黃色的起始圖像的左上角:

convert shapes.png -fill yellow -draw 'color 0,0 floodfill' result.png 

enter image description here

現在設置填充顏色爲白色,overpaint所有的黑色區域用白色填充-colour:

convert shapes.png -fill yellow -draw 'color 0,0 floodfill' -fill white -opaque black result.png 

enter image description here

現在設置填充顏色爲黑色,並overpaint黃色區域用黑色填充顏色:

convert shapes.png -fill yellow -draw 'color 0,0 floodfill' -fill white -opaque black -fill black -opaque yellow result.png 

enter image description here