opencv学习-形态学操作应用-提取水平与垂直线

提取步骤

1.转化为灰度图像

cvtColor(src,dst,color_BGR2GRAY)

2.转化为二值图像

adaptiveThreshold

3.定义结构元素

4.开操作 (腐蚀+膨胀)提取 水平与垂直线

代码

#include 
#include

using namespace std;
using namespace cv;

int main()
{
		Mat src, grayImg, binImg, dest,dest1;
		//1、读取和显示图片
		src = imread("D:/images/morph01.png");
		if (src.empty()) {
			cout << "图片打开失败!" << endl;
			return -1;
		}
		imshow("原图像", src);

		//2、转为灰度图
		cvtColor(src, grayImg, COLOR_BGR2GRAY);
		imshow("灰度图", grayImg);

		//3、转为二值图像
		adaptiveThreshold(grayImg, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);
		imshow("二值图像", binImg);

		//4、构建结构元素
		Mat kernel = getStructuringElement(MORPH_RECT, Size(1, 20),Point(-1,-1));

		//5、开操作
		erode(binImg, dest, kernel);
		imshow("腐蚀后", dest);
		dilate(dest, dest1, kernel);
		//或是:morphologyEx(binImg, dest, MORPH_OPEN, kernel)等同于上面的先腐蚀和后膨胀;
		imshow("最终结果", dest1);
		waitKey(0);
	}

opencv学习-形态学操作应用-提取水平与垂直线_第1张图片

你可能感兴趣的:(opencv,机器学习)