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

本文主要是介绍【OpenCV基础】形态学操作应用-提取图片中文字、水平与垂直线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

文章目录

  • 一、提取图片中的文字
    • 1.步骤
    • 2.全部代码
    • 3.效果展示
  • 二、提取水平与垂直线
    • 1.转化为灰度图像
    • 2.转化为二值图像
    • 3.定义结构元素
    • 4.开操作 (腐蚀+膨胀)
    • 5.代码演示
    • 6.效果展示


一、提取图片中的文字

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.效果展示

在这里插入图片描述

这篇关于【OpenCV基础】形态学操作应用-提取图片中文字、水平与垂直线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/241833

相关文章

Git可视化管理工具(SourceTree)使用操作大全经典

《Git可视化管理工具(SourceTree)使用操作大全经典》本文详细介绍了SourceTree作为Git可视化管理工具的常用操作,包括连接远程仓库、添加SSH密钥、克隆仓库、设置默认项目目录、代码... 目录前言:连接Gitee or github,获取代码:在SourceTree中添加SSH密钥:Cl

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

Python位移操作和位运算的实现示例

《Python位移操作和位运算的实现示例》本文主要介绍了Python位移操作和位运算的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 位移操作1.1 左移操作 (<<)1.2 右移操作 (>>)注意事项:2. 位运算2.1

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

关于MongoDB图片URL存储异常问题以及解决

《关于MongoDB图片URL存储异常问题以及解决》:本文主要介绍关于MongoDB图片URL存储异常问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录MongoDB图片URL存储异常问题项目场景问题描述原因分析解决方案预防措施js总结MongoDB图

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Java中字符串转时间与时间转字符串的操作详解

《Java中字符串转时间与时间转字符串的操作详解》Java的java.time包提供了强大的日期和时间处理功能,通过DateTimeFormatter可以轻松地在日期时间对象和字符串之间进行转换,下面... 目录一、字符串转时间(一)使用预定义格式(二)自定义格式二、时间转字符串(一)使用预定义格式(二)自

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py