只用来记录学习笔记
准备工作:
步骤1-变灰度图像
Mat gray_src;
cvtColor(src, gray_src, CV_BGR2GRAY); //转灰度
imshow("gray image", gray_src); //输出灰度图像
步骤2-变成二值图像
Mat binImg;
adaptiveThreshold(~gray_src, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2); //转换为二值图像
imshow("bin image", binImg);
~gray_src:表示反转,就是变成黑底白线
binImg:
255:二值图像最大值
ADAPTIVE_THRESH_MEAN_C:自适应方法,ADAPTIVE_THRESH_MEAN_C, ADAPTIVE_THRESH_GAUSSIAN_C 二选一
THRESH_BINARY: 阈值类型
15:块大小
-2:常量C 可以是正数,0,负数
Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 16, 1), Point(-1, -1)); //水平结构元素
方法一:
Mat temp;
erode(binImg, temp, hline);//先腐蚀
dilate(temp,dst,hline); //后膨胀
imshow("Final image1", temp); //开操作的结果图
方法二:
morphologyEx(binImg, dst, CV_MOP_OPEN, hline);
2.提取竖直线
Mat vline = getStructuringElement(MORPH_RECT, Size(1, src.rows / 16), Point(-1, -1)); //竖直结构元素
Mat temp;
erode(binImg, temp, vline );//先腐蚀
dilate(temp,dst,vline ); //后膨胀
imshow("Final image1", temp); //开操作的结果图
demo:
图片验证码去线条
使用的是3*3结构元素
Mat cline = getStructuringElement(MORPH_RECT, Size(3,3), Point(-1, -1)); //3*3结构元素
Mat temp2;
erode(binImg, temp2, cline); //binImg是二值图像
dilate(temp2, dst, cline);
imshow("Final image2", dst);