基于OpenCV 与 C++ 的图像阴影去除

90 篇文章 ¥69.90 ¥99.00
本文介绍了如何使用C++和OpenCV库来手动去除图像中的阴影。通过对比原Python版本,作者修复了一个错误并提供了C++版本的代码实现。在处理过程中,根据图像背景和对象的亮度,选择先进行最大滤波还是最小滤波,再利用黑帽运算提取暗部,从而达到去除阴影的效果。文中还包括了测试过程和结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

声明:本文章是根据https://cloud.tencent.com/developer/article/1758016做了修改与调整,原博客是python代码实现,本人将其转为C++ opencv,且修正了原文章中的bug(一个错误),照原文章是做不出他那文章中的效果的。

原文写到:
我们经常需要通过扫描将纸上的全部内容转换为图像。有很多在线工具可以提高图像的亮度,或者消除图像中的阴影。但是我们可以手动删除阴影吗?当然可以,我们只需要将图像加载到相应的代码中,无需任何应用程序即可在几秒钟内获得输出。这个代码可以通过Numpy和OpenCV基本函数来实现。为了说明该过程,使用了以下图像进行操作。 这里我采用C++ opencv组合替代 python Numpy和OpenCV组合。

删除阴影时,有两件事要注意。由于图像是灰度图像,如果图像背景较浅且对象较暗,则必须先执行最大滤波(膨胀),然后再执行最小滤波(腐蚀)。如果图像背景较暗且物体较亮,我们可以先执行最小滤波,然后再进行最大滤波。

下面是本人的代码演示环节:
实际就是对原图进行了黑帽运算,用与显示与其领域相比更暗的部分,也就是黑帽操作能提取出暗洞。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

thequitesunshine007

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

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

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

打赏作者

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

抵扣说明:

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

余额充值