2010-02-27 155 views
5

我試圖在OpenCV中找到Matlabs「Bwareaopen」函數的相似或等效函數?OpenCV中的Matlab Bwareaopen等價函數

在MatLab Bwareaopen(image,P)從二進制圖像中刪除所有具有少於P像素的連接組件(對象)。

在我的1頻道圖像中,我想簡單地刪除不屬於較大區域的小區域?有沒有什麼微不足道的方法來解決這個問題?

回答

3

看看cvBlobsLib,它有功能可以做你想做的。事實上,我認爲,該鏈接首頁上的代碼示例完全符合您的需求。 實質上,您可以使用CBlobResult在二進制映像上執行連接組件標籤,然後根據您的條件調用Filter排除斑點。

+0

感謝tzaman快速回答和你的權利cvBlobsLib正是我所需要的。 但現在的事情是我不舒服,我可以在我的Xcode項目(iPhone)庫中導入這些cvBlobsLib,即使導入了opencv庫,我也已經做了很多工作。你認爲我可以從庫中複製部分代碼嗎? – Miha 2010-02-27 18:40:04

+0

我自己並沒有真正使用cvBlobsLib(或Xcode!),但它是作爲源代碼發佈的,所以你應該能夠將所有'.cpp'和'.h'文件添加到你的項目中,'#inc'適當的標題,並從那裏採取。 – tzaman 2010-02-27 19:29:40

+0

此外,不要忘記接受/ upvote如果有幫助的答案! :) – tzaman 2010-02-27 19:35:42

0

沒有這樣的功能,但你可以 1)找到輪廓 2)找到輪廓區域 3)過濾與區域內的所有外部輪廓小於門限 4)創建新的黑色圖像 5)繪製左輪廓在它上面 6)掩蓋它與原始圖像