opencv图像处理之灰度化和二值化

1.3、demo


#include

#include<opencv2\highgui\highgui.hpp>

#include<opencv2\core\core.hpp>

#include <opencv2\imgproc\imgproc.hpp>

using namespace std;

using namespace cv;

int main()

{

Mat img, imgGray,result;

img = imread(“test.jpg”);

if (!img.data) {

cout << “Please input image path” << endl;

return 0;

}

imshow(“原图”, img);

cvtColor(img, imgGray, CV_BGR2GRAY);

imshow(“灰度图”, imgGray);

//blur(imgGray, imgGray, Size(3, 3));

threshold(imgGray, result, 100, 255, CV_THRESH_BINARY);

imshow(“二值化后的图”, result);

imwrite(“二值化的二维码.jpg”, result);

cout << “图片已保存” << endl;

waitKey();

return 0;

}

1.4、效果:


19956127-0e08fb5e8316a0f4.png

二、腐蚀与膨胀

=======

2.1 腐蚀的原理:


二值图像前景物体为1,背景为0.假设原图像中有一个前景物体,那么我们用一个结构元素去腐蚀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最小值,用这个最小值替换当前像素值。由于二值图像最小值就是0,所以就是用0替换,即变成了黑色背景。从而也可以看出,如果当前结构元素覆盖下,全部都是背景,那么就不会对原图做出改动,因为都是0.如果全部都是前景像素,也不会对原图做出改动,因为都是1.只有结构元素位于前景物体边缘的时候,它覆盖的区域内才会出现0和1两种不同的像素值,这个时候把当前像素替换成0就有变化了。因此腐蚀看起来的效果就是让前景物体缩小了一圈一样。对于前景物体中一些细小的连接处,如果结构元素大小相等,这些连接处就会被断开。

2.2 膨胀的原理:


二值图像前景物体为1,背景为0.假设原图像中有一个前景物体,那么我们用一个结构元素去膨胀原图的过程是这样的:遍历原图像的每一个像素,然后用结构元素的中心点对准当前正在遍历的这个像素,然后取当前结构元素所覆盖下的原图对应区域内的所有像素的最大值,用这个最大值替换当前像素值。由于二值图像最大值就是1,所以就是用1替换,即变成了白色前景物体。从而也可以看出,如果当前结构元素覆盖下,全部都是背景,那么就不会对原图做出改动,因为都是0.如果全部都是前景像素,也不会对原图做出改动,因为都是1.只有结构元素位于前景物体边缘的时候,它覆盖的区域内才会出现0和1两种不同的像素值,这个时候把当前像素替换成1就有变化了。因此膨胀看起来的效果就是让前景物体胀大了一圈一样。对于前景物体中一些细小的断裂处,如果结构元素大小相等,这些断裂的地方就会被连接起来。

参考

https://blog.csdn.net/chenyuping333/article/details/81483593

https://blog.csdn.net/woainishifu/article/details/60778033

阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击:https://space.bilibili.com/474380680

文末

那么对于想坚持程序员这行的真的就一点希望都没有吗?
其实不然,在互联网的大浪淘沙之下,留下的永远是最优秀的,我们考虑的不是哪个行业差哪个行业难,就逃避掉这些,无论哪个行业,都会有他的问题,但是无论哪个行业都会有站在最顶端的那群人。我们要做的就是努力提升自己,让自己站在最顶端,学历不够那就去读,知识不够那就去学。人之所以为人,不就是有解决问题的能力吗?挡住自己的由于只有自己。
Android希望=技能+面试

  • 技能
  • 面试技巧+面试题

    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
    转存中…(img-P3tZqnHc-1715500587353)]
    《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!
  • 30
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中的代码是使用OpenCV库对灰度图像进行二值化的示例代码。在这段代码中,首先将彩色图像转换为灰度图像,然后使用阈值函数将灰度图像转换为二值图像。阈值函数将图像中大于阈值的像素点设为0(白色部分),小于阈值的像素点设为1(黑色部分)。最后,将二值图像保存并显示出来。 引用\[2\]中的代码也是使用OpenCV库对图像进行二值化的示例代码。在这段代码中,首先加载图像,然后将图像转换为灰度图像。接下来,使用OTSU算法进行自动阈值化,将灰度图像转换为二值图像。最后,显示二值图像。 引用\[3\]中的代码是使用Python的OpenCV库对图像进行二值化的示例代码。在这段代码中,首先加载图像,然后将图像转换为灰度图像。接下来,遍历每个像素点,根据设定的阈值将像素点的灰度值设置为0或255,从而实现图像的二值化。最后,显示二值化后的图像。 综上所述,无论是使用C++还是Python,通过OpenCV库都可以对灰度图像进行二值化处理。 #### 引用[.reference_title] - *1* [opencv图像处理灰度化二值化](https://blog.csdn.net/AndroidAlvin/article/details/103307360)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Opencv-图像灰度化二值化](https://blog.csdn.net/u013828787/article/details/22859043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [OpenCV图像处理----图像的二值化](https://blog.csdn.net/bjsyc123456/article/details/124781982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值