美文网首页
OpenCV图像处理(八)提取水平线和垂直线

OpenCV图像处理(八)提取水平线和垂直线

作者: 行走行囊 | 来源:发表于2018-04-08 21:12 被阅读0次

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

相关文章

网友评论

      本文标题:OpenCV图像处理(八)提取水平线和垂直线

      本文链接:https://www.haomeiwen.com/subject/oaoxhftx.html