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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容