這篇文章主要為大家展示了“C++ OpenCV如何實現腐蝕與膨脹”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“C++ OpenCV如何實現腐蝕與膨脹”這篇文章吧。
網站建設哪家好,找成都創新互聯公司!專注于網頁設計、網站建設、微信開發、微信小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了鶴山免費建站歡迎大家使用!
腐蝕與膨脹
是OpenCV提供的兩種最基本的形態學操作
簡單來講,形態學操作就是基于形狀的一系列圖像處理操作。通過將 結構元素 作用于輸入圖像來產生輸出圖像。
最基本的形態學操作有二:腐蝕與膨脹(Erosion 與 Dilation)。 他們的運用廣泛:
消除噪聲
分割(isolate)獨立的圖像元素,以及連接(join)相鄰的元素。
尋找圖像中的明顯的極大值區域或極小值區域。
通過以下圖像,我們簡要來討論一下膨脹與腐蝕操作(譯者注:注意這張圖像中的字母為黑色,背景為白色,而不是一般意義的背景為黑色,前景為白色):
膨脹
此操作將圖像 與任意形狀的內核 (),通常為正方形或圓形,進行卷積。
內核 有一個可定義的 錨點, 通常定義為內核中心點。
進行膨脹操作時,將內核 劃過圖像,將內核 覆蓋區域的最大相素值提取,并代替錨點位置的相素。顯然,這一最大化操作將會導致圖像中的亮區開始”擴展” (因此有了術語膨脹 dilation )。對上圖采用膨脹操作我們得到:
背景(白色)膨脹,而黑色字母縮小了。
腐蝕
腐蝕在形態學操作家族里是膨脹操作的孿生姐妹。它提取的是內核覆蓋下的相素最小值。
進行腐蝕操作時,將內核 劃過圖像,將內核 覆蓋區域的最小相素值提取,并代替錨點位置的相素。
以與膨脹相同的圖像作為樣本,我們使用腐蝕操作。從下面的結果圖我們看到亮區(背景)變細,而黑色區域(字母)則變大了
相關API
getStructuringElement
我們可以為我們的內核選擇三種形狀之一:
矩形: MORPH_RECT
交叉形: MORPH_CROSS
橢圓形: MORPH_ELLIPSE
然后,我們還需要指定內核大小,以及 錨點 位置。不指定錨點位置,則默認錨點在內核中心位置。
先上干貨
腐蝕和腫脹的Demo演示效果:
代碼演示
新建一個項目opencv-0010,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.并加載我們常用的那個圖片顯示出來
我們先定義element用于做腐蝕和膨脹的操作
在上面設置兩個參數
定義最大的點和當前的點
然后我們還用到了 createTrackbar這個函數.createTrackbar是Opencv中的API,其可在顯示圖像的窗口中快速創建一個滑動控件,用于手動調節閾值,具有非常直觀的效果。
膨脹操作
定義膨脹的顯示圖像名稱char showdilate[] = "outputdilate";
定義一個膨脹用的回調函數void cv_dilate(int, void*);
然后在Main方法中加入創建滑動條,并實現這個膨脹的方法
出現效果
當修改上面滑動條后可以看到很明顯的膨脹效果
腐蝕操作
定義腐蝕的顯示窗體名稱和方法
我們寫cv_erode的實現方法
然后在Main方法里面加入腐蝕的滑動條
顯示效果,我們滑動條SIZE調到2
以上是“C++ OpenCV如何實現腐蝕與膨脹”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創新互聯行業資訊頻道!
當前標題:C++OpenCV如何實現腐蝕與膨脹
文章轉載:http://m.newbst.com/article16/jicggg.html
成都網站建設公司_創新互聯,為您提供云服務器、品牌網站設計、建站公司、網站導航、做網站、品牌網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯