2015-10-15 18 views
0

我正在編寫使用mog2算法從輸入中提取背景的實時視頻處理代碼,然後使用形態濾波器對其進行平滑處理。OpenCV在間隙閾值內合併掩膜部分

問題是,有時在一個對象的掩碼中存在間隙。我認爲我可以用某種算法修復它以填補閾值內的空白,但OpenCV中是否有像這樣的算法,還是我必須自己編寫它?

左圖是實際的面具,右邊那個是我的塗料製造預期的結果:

+0

您可以指定一種編程語言嗎?你能提供一些能夠表達問題的圖像,以及期望的結果嗎? – Miki

+0

完成。添加圖像的問題。 –

+0

我感覺它是因爲影子。捕捉後首先嚐試圖像模糊。或嘗試使發光值null在一定程度上這將解決我猜.. .. – Arjun

回答

0

關於編輯二進制掩碼是一個二元形態操作:您希望您的二進制掩碼的closing

enter image description here

約形態學閉信息是here(包括圖像)

OpenCV Java documentation(由我縮短)

public static void morphologyEx(Mat src,Mat dst,int op,Mat kernel)

執行先進的形態轉換。

該功能可以使用 進行高級形態轉換作爲基本操作的侵蝕和膨脹。 [...]> 注:

使用用於形態學 開口morphologyEx功能和閉合操作的一個例子可以在 opencv_source_code /樣品/ CPP/morphology2.cpp找到

  • 運算

MORPH_CLOSE - 閉合操作

MORPH_GRADIENT - 形態梯度

MORPH_TOPHAT - 「大禮帽」

MORPH_BLACKHAT - 「黑帽子」

我不知道有足夠的瞭解的OpenCV的Java綁定,但它可能是非常相似的中提到的C++例子以上報價:

// Close the image in C++ 
cv::Mat element5(5,5,CV_8U,cv::Scalar(1)); # 5 by 5 element set at 1 
cv::Mat closed; 
cv::morphologyEx(image,closed,cv::MORPH_CLOSE,element5); 
+0

這或多或少是我所尋找的,並不總是理想的,但足以滿足我的需求。 –