OpenCV圖像處理(八)提取水平線和垂直線

1、原理

膨脹:取卷積核內的像素最大值。
腐蝕:取卷積核內的像素最小值。

去掉垂直線,首先把圖像轉為二值圖像(線條為255),通過getStructuringElement獲取卷積核,定義一個Size(9,1)大小的核,帶入dilate方法,卷積核內取最大值,OK。相反,線條為0(黑色),則可以使用erode方法。
去掉水平線,略。

2、測試代碼

void test8() {
    Mat src = imread("D:/line.png");
    imshow("src", src);
    Mat gray,gray1;
    cvtColor(src, gray, CV_BGR2GRAY);
    cvtColor(src, gray1, CV_BGR2GRAY);
    threshold(gray, gray, 200, 255, THRESH_BINARY);
    Mat kernel = getStructuringElement(CV_SHAPE_RECT, Size(9, 1), Point(-1, -1));
    dilate(gray, gray, kernel);
    imshow("gray", gray);

    Mat kernel1= getStructuringElement(CV_SHAPE_RECT, Size(1, 9), Point(-1, -1));
    dilate(gray1, gray1, kernel1);
    imshow("gray1", gray1);
}
src.png
gray.png
gray1.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容