原理方法
先说原理:通过膨胀和腐蚀操作,通过改变输入的结构元素实现提取水平线和垂直线文字
提取步骤
- 输入彩色图像(imread)
- 转换为灰度图像(cvtColor)
- 灰度图像装换为二值图像(adaptiveThreshold)
- 定义结构元素
- 开操作(腐蚀膨胀)提取目标对象
注意:
提取水平线或者垂直线或者文字取决于你定义的结构元素不同而不同,下面会详细说明不同的结构元素。
演示
提取水平线
结构元素的定义:
Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 16, 1), Point(-1, -1));
//求水平线需要的结构元素
先来看看原图:
提取代码:
cvtColor(img, dst, COLOR_BGR2GRAY);//转化为灰度图
adaptiveThreshold(~dst, src, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
//转换为二值图
//~dst表示对dst图像取反,既相当于白色背景变成黑色,黑色背景变成白色
//注意通过该方法转化输入要为灰度图
Mat hline = getStructuringElement(MORPH_RECT, Size(sr