zoukankan      html  css  js  c++  java
  • OpenCV 实现图像去阴影

    实现思路:

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

    原图:

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

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

  • 相关阅读:
    AIX系统/var/adm/wtmp大文件处理
    script & scriptreplay
    Ubuntu/Debianpxe/isopreseed
    Ubuntu12.04安装gimp-2.8
    Ubuntu 3D特效一览
    Unix history图览
    Undelete Files on Linux Systems
    开源界有趣的循环缩写和LOGO
    Ubuntu上的dock
    linux下歌曲、视频、文件等乱码
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/15700904.html
Copyright © 2011-2022 走看看