一杯清酒邀明月
天下本无事,庸人扰之而烦耳。
posts - 3121,comments - 209,views - 578万

实现思路:

  1. 图将转为灰度图
  2. 将灰度图进行闭运算操作
  3. 闭运算后的图减去原灰度图再取反
  4. 将取反后的图使用归一化将白色背景修改贴近原图

opencv实现:

复制代码
 1     Mat src = imread("D:/opencv练习图片/去阴影.png");
 2     imshow("原图", src);
 3     //1.将图像转为灰度图
 4     Mat gray;
 5     cvtColor(src, gray, COLOR_BGR2GRAY);
 6     //定义腐蚀和膨胀的结构化元素和迭代次数
 7     Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));
 8     int iteration = 9;
 9     //2.将灰度图进行闭运算操作
10     Mat closeMat;
11     morphologyEx(gray, closeMat, MORPH_CLOSE, element, Point(-1, -1), iteration);
12     imshow("闭运算", closeMat);
13     //4.闭运算后的图减去原灰度图再进行取反操作
14     Mat calcMat = ~(closeMat - gray);
15     imshow("calc", calcMat);
16     //5.使用规一化将原来背景白色的改了和原来灰度图差不多的灰色
17     Mat removeShadowMat;
18     normalize(calcMat, removeShadowMat, 0, 200, NORM_MINMAX);
19     imshow("dst", removeShadowMat);
复制代码

原图:

 

 😃我们可以看到 这里的形态学的妙用: 

在对原图进行闭运算以后,可以发现我们就得到了只有阴影的图像。

 

posted on   一杯清酒邀明月  阅读(1421)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
历史上的今天:
2020-12-17 Qt 多线程之QtConcurrent::map(处理序列容器)
2020-12-17 Qt QtConcurrent多线程 - map、mapped和mappedReduced
2020-12-17 Qt 并行运算高级API QtConcurrent
2020-12-17 Qt QFuture简介
2020-12-17 C++11中的std::bind
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示