您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C++ OpenCV如何提取水平和垂直線,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
原理方法
圖像形態學操作時候,可以通過自定義的結構元素實惠結構元素對輸入圖像一些對象敏感,另外一些不敏感,這樣就會讓敏感的對象改變而不敏感的對象保留輸出,通過使用兩個最基本的形態學操作--膨脹和腐蝕,使用不同的結構元素實現對輸入圖像的操作,得到想要的結果.
膨脹 , 輸出的像素值是結構元素覆蓋下輸入圖像的最大像素值
腐蝕 , 輸出的圖像值是結構元素覆蓋下輸入圖像的最小像素值
提取方法
輸入圖像彩色圖像imread
轉換為灰度圖像 -- cvtColor
轉換為二值圖像 -- adaptiveThreshold
定義結構元素
開操作(腐蝕+膨脹)提取水平與垂直線
代碼演示
新建一個項目opencv-0012,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.并加載我們常用的那個圖片顯示出來,這次我們加載的圖像換了一張,因為原來的圖像里面找不到水平和垂直的線,所以我們新換了一個圖片
顯示效果
根據上面寫的提取方法順序,我們寫代碼
1.先取灰度圖像
顯示效果
里面有個提示,當圖像轉為灰度或是二值圖時,我們在Mat類型如果前面加上~就代表取反了,像剛才的代碼里面我們顯示的時候把dst前面加上~
顯示效果如下:
2.轉換為二值圖像
把上面的灰度圖像取反后我們再轉換為二值圖像
顯示效果如下:
3.定義結構元素
//定義橫線結構元素
cv::Mat hline = cv::getStructuringElement(cv::MORPH_RECT,
cv::Size(src.cols / 5, 1), cv::Point(-1, -1));
其實 Size里面src.cols/5我們是帶表寬度為原圖的5分之一長,如果不夠五分之一長度就過濾掉,1是高度,所以這樣就是一個橫線的元素
4.進行開操作
顯示效果
可以看到只保留了長度為圖像五分之一長的橫線.
取垂直線
我們把剛才的代碼改造一下,讓垂直和水平都顯示出來
垂直線取法就是在Size里面把后面的高度改為圖像的五分之一
顯示效果為
關于“C++ OpenCV如何提取水平和垂直線”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。