【OpenCV基础】形态学操作应用-提取图片中文字、水平与垂直线

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处


一、提取图片中的文字

1.步骤

1.读取原图
2.灰度化
3.二值化
4.膨胀
5.腐蚀
6.像素值取反

2.全部代码

#include<iostream>
#include<opencv2/opencv.hpp>

using namespace std;
using namespace cv;


int main(){	
	Mat src, src_gray, src_bin, src_erode, kernerl, src_dilate, src_bitwise;
	src = imread("D:/images/morph02.png");
	if (src.empty())
	{
		cout << "could not load image..." << endl;
		return -1;
	}
	imshow("原图", src);
	cvtColor(src, src_gray, COLOR_BGR2GRAY);
	imshow("src_gray", src_gray);
	threshold(src_gray, src_bin,150,255,THRESH_BINARY);
	imshow("src_bin", src_bin);
	kernerl = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));
	dilate(src_bin, src_dilate, kernerl);
	imshow("src_dilate", src_dilate);
	erode(src_dilate, src_erode, kernerl);
	imshow("src_erode", src_erode);
	bitwise_not(src_erode, src_bitwise);
	imshow("src_bitwise", src_bitwise);

	waitKey(0);
	return 0;
}


3.效果展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、提取水平与垂直线

1.转化为灰度图像

cvtColor(src,dst,color_BGR2GRAY)

2.转化为二值图像

adaptiveThreshold

3.定义结构元素

4.开操作 (腐蚀+膨胀)

5.代码演示

#include <opencv2\opencv.hpp>
#include<iostream>

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);
	}

6.效果展示

在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌小超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值