操作过程:
-
1) 读取原图;
-
2) 转为灰度图像;
-
3) 转为二值图像;
-
4) 定义结构元素;
-
5) 开操作。
void GetLine()
{
Mat src, grayImg, binImg, dest;
//①、读取图片
src = imread("D:\\2.png");
if (!src.data){
cout << "图片打开失败!" << endl;
return;
}
namedWindow("原图像", CV_WINDOW_AUTOSIZE);
imshow("原图像", src);
//②、转为灰度图
cvtColor(src, grayImg, CV_RGB2GRAY);
namedWindow("灰度图", CV_WINDOW_AUTOSIZE);
imshow("灰度图", grayImg);
//③、转为二值图像
adaptiveThreshold(~grayImg, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
namedWindow("二值图像", CV_WINDOW_AUTOSIZE);
imshow("二值图像", binImg);
//④、定义结构元素
Mat kernel = getStructuringElement(MORPH_RECT, Size(1, 19));//Size(19, 1)是提取水平线
//⑤、开操作
morphologyEx(binImg, dest, MORPH_OPEN, kernel);
namedWindow("最终结果", CV_WINDOW_AUTOSIZE);
imshow("最终结果", ~dest);
cvWaitKey();
}
运行结果:
原文地址:https://blog.csdn.net/qq_25343557/article/details/78691828