中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ OpenCV如何提取水平和垂直線

發布時間:2021-11-26 10:41:22 來源:億速云 閱讀:254 作者:小新 欄目:大數據

這篇文章將為大家詳細講解有關C++ OpenCV如何提取水平和垂直線,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

原理方法

圖像形態學操作時候,可以通過自定義的結構元素實惠結構元素對輸入圖像一些對象敏感,另外一些不敏感,這樣就會讓敏感的對象改變而不敏感的對象保留輸出,通過使用兩個最基本的形態學操作--膨脹和腐蝕,使用不同的結構元素實現對輸入圖像的操作,得到想要的結果.

膨脹 , 輸出的像素值是結構元素覆蓋下輸入圖像的最大像素值

腐蝕 , 輸出的圖像值是結構元素覆蓋下輸入圖像的最小像素值

提取方法

  • 輸入圖像彩色圖像imread

  • 轉換為灰度圖像 -- cvtColor

  • 轉換為二值圖像 -- adaptiveThreshold

  • 定義結構元素

  • 開操作(腐蝕+膨脹)提取水平與垂直線

C++ OpenCV如何提取水平和垂直線

代碼演示

新建一個項目opencv-0012,配置屬性(VS2017配置OpenCV通用屬性),然后在源文件寫入#include和main方法.并加載我們常用的那個圖片顯示出來,這次我們加載的圖像換了一張,因為原來的圖像里面找不到水平和垂直的線,所以我們新換了一個圖片

C++ OpenCV如何提取水平和垂直線

顯示效果

C++ OpenCV如何提取水平和垂直線

根據上面寫的提取方法順序,我們寫代碼

1.先取灰度圖像

C++ OpenCV如何提取水平和垂直線

顯示效果

C++ OpenCV如何提取水平和垂直線

里面有個提示,當圖像轉為灰度或是二值圖時,我們在Mat類型如果前面加上~就代表取反了,像剛才的代碼里面我們顯示的時候把dst前面加上~

C++ OpenCV如何提取水平和垂直線

顯示效果如下:

C++ OpenCV如何提取水平和垂直線

2.轉換為二值圖像

把上面的灰度圖像取反后我們再轉換為二值圖像

C++ OpenCV如何提取水平和垂直線

顯示效果如下:

C++ OpenCV如何提取水平和垂直線

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.進行開操作

C++ OpenCV如何提取水平和垂直線

顯示效果

C++ OpenCV如何提取水平和垂直線

可以看到只保留了長度為圖像五分之一長的橫線.

取垂直線

C++ OpenCV如何提取水平和垂直線

我們把剛才的代碼改造一下,讓垂直和水平都顯示出來

垂直線取法就是在Size里面把后面的高度改為圖像的五分之一

顯示效果為

C++ OpenCV如何提取水平和垂直線


關于“C++ OpenCV如何提取水平和垂直線”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆尧县| 怀柔区| 武隆县| 正蓝旗| 巍山| 吴忠市| 内黄县| 炉霍县| 永康市| 西青区| 郧西县| 贡山| 炎陵县| 永宁县| 莆田市| 平舆县| 尼勒克县| 汾西县| 无为县| 铜山县| 西林县| 民勤县| 丘北县| 合阳县| 萨迦县| 吴忠市| 江油市| 巫溪县| 潞城市| 乌兰浩特市| 行唐县| 青河县| 高台县| 青冈县| 商南县| 郑州市| 锡林郭勒盟| 呼图壁县| 绍兴市| 连山| 嘉善县|