#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "highgui.h"
#include <stdlib.h>
#include <stdio.h>using namespace cv;/// 全局变量
Mat src, erosion_dst, dilation_dst;int erosion_elem = 0;
int erosion_size = 0;
int dilation_elem = 0;
int dilation_size = 0;
int const max_elem = 2;
int const max_kernel_size = 21;/** Function Headers */
void Erosion(int, void*);
void Dilation(int, void*);/** @function main */
int main()
{/// Load 图像src = imread("I:/matlab_pic_deal/line.bmp");if (!src.data){return -1;}/// 创建显示窗口namedWindow("Erosion Demo", CV_WINDOW_AUTOSIZE);namedWindow("Dilation Demo", CV_WINDOW_AUTOSIZE);cvMoveWindow("Dilation Demo", src.cols, 0);/// 创建腐蚀 TrackbarcreateTrackbar("Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Erosion Demo",&erosion_elem, max_elem,Erosion);createTrackbar("Kernel size:\n 2n +1", "Erosion Demo",&erosion_size, max_kernel_size,Erosion);/// 创建膨胀 TrackbarcreateTrackbar("Element:\n 0: Rect \n 1: Cross \n 2: Ellipse", "Dilation Demo",&dilation_elem, max_elem,Dilation);createTrackbar("Kernel size:\n 2n +1", "Dilation Demo",&dilation_size, max_kernel_size,Dilation);/// Default startErosion(0, 0);Dilation(0, 0);waitKey(0);return 0;
}/**  @function Erosion  */
void Erosion(int, void*)
{int erosion_type;if (erosion_elem == 0) { erosion_type = MORPH_RECT; }else if (erosion_elem == 1) { erosion_type = MORPH_CROSS; }else if (erosion_elem == 2) { erosion_type = MORPH_ELLIPSE; }Mat element = getStructuringElement(erosion_type,Size(2 * erosion_size + 1, 2 * erosion_size + 1),Point(erosion_size, erosion_size));/// 腐蚀操作erode(src, erosion_dst, element);imshow("Erosion Demo", erosion_dst);
}/** @function Dilation */
void Dilation(int, void*)
{int dilation_type;if (dilation_elem == 0) { dilation_type = MORPH_RECT; }else if (dilation_elem == 1) { dilation_type = MORPH_CROSS; }else if (dilation_elem == 2) { dilation_type = MORPH_ELLIPSE; }Mat element = getStructuringElement(dilation_type,Size(2 * dilation_size + 1, 2 * dilation_size + 1),Point(dilation_size, dilation_size));///膨胀操作dilate(src, dilation_dst, element);imshow("Dilation Demo", dilation_dst);
}

处理前后的对比:

Opencv腐蚀操作去除激光反光光斑相关推荐

  1. OpenCV 形态学操作之腐蚀与膨胀,开运算与闭运算,顶帽与黑帽,图像梯度运算相关知识点回顾

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧.本篇博客是这个系列的第 45 篇. 该系列文章导航参考:https://blog.csdn.net/hihell/categ ...

  2. opencv学习笔记(2017年8月21日)之图像腐蚀操作

    最近在看毛星云那本<opencv3编程入门>,但是那本书配套代码,老是在我的vs2017和opencv3.3.0版本里编译出错,一直不知道什么原因,就是图片老是显示灰色,且闪退.不是图片路 ...

  3. python opencv 腐蚀_opencv 图像的腐蚀(erode)和膨胀(dilate) 开运算以及闭运算

    原文链接:opencv 图像的腐蚀(erode)和膨胀(dilate) 开运算以及闭运算 OpenCV---开闭操作 - 山上有风景 - 博客园 腐蚀 : 腐蚀操作会把前景物体的边缘腐蚀掉.原理是卷积 ...

  4. OpenCV形态学操作

    OpenCV形态学操作 本文转载自:http://blog.csdn.net/byxdaz/article/details/5775717 一.图像腐蚀 膨胀 细化的基本原理   1.图像细化的基本原 ...

  5. OpenCV 形态学操作

    形态学,即数学形态学(Mathematical Morphology),是图像处理过程中一个非常重要的研究方向.形态学主要从图像内提取分量信息,该分量信息通常对于表达和描绘图像的形状具有重要意义,通常 ...

  6. OpenCV腐蚀和膨胀Eroding and Dilating

    OpenCV腐蚀和膨胀Eroding and Dilating 腐蚀和膨胀Eroding and Dilating 目标 形态运算 膨胀 侵蚀 代码 解释 腐蚀功能 膨胀功能 结果 腐蚀和膨胀Erod ...

  7. OpenCV相关操作(cv2) (python)

    注意opencv读入和保存图像的通道顺序为BGR ,而不是RGB 需要的时候要做转换 opencv要比PIL, plt的速度更快一些 ①读取图像 cv2.imread() cv2.imread(pat ...

  8. 15、OpenCV形态学操作——Hit-or-Miss

    OpenCV形态学操作--Hit-or-Miss 一.学习目标 二.Hit-or-Miss 一.学习目标 理解什么是Hit-or-Miss 学会在OpenCV中使用Hit-or-Miss 二.Hit- ...

  9. opencv 形态学操作(python)

    形态学操作 形态学操作 腐蚀 膨胀 通用形态学函数 开运算 闭运算 形态学梯度运算 礼帽运算 黑帽运算 核函数 形态学操作 形态学,即数学形态学(Mathematical Morphology),是图 ...

最新文章

  1. Android线程模型和AsyncTask
  2. Markdown-基础语法
  3. oracle10数据库链接失败,PLSQL Developer连接Oracle 10g或Oracle 11g失败
  4. jquery获取文档高度和窗口高度的例子
  5. 第六十八期:程序员与医生
  6. java lambda max_在Java中使用Lambda表达式查找Max
  7. 苹果秋季新品发布会终于官宣:然而并不会发布新iPhone?
  8. 电脑键盘关机是哪个键_电脑关机后键盘鼠标还亮着怎么关闭?华硕主板的解决方法...
  9. 暴怒程序员的呐喊:别让我做那些没用的东西
  10. Java 跌落神坛,Python 继续夺冠....凭啥?
  11. 让木桶没有短板,FISCO BCOS全面推进并行化改造
  12. 替换空格python实现
  13. 2021年BATJ30套大厂Android经典高频面试题,附答案
  14. 独家可用发卡小程序源码下载卡密系统支持多种卡密领取模式流量主内附教程
  15. yylabel 加载html,YYLabel的简单使用
  16. 四象限法推导lm曲线_数据分析四象限法详解
  17. vs2015官方下载链接
  18. 用模拟退火算法估价heston期权定价模型的五个参数
  19. iPhone 13关闭个性化广告该怎么关 关闭个性化广告教程一览
  20. 在编译前与后调教C语言binary的一种方法

热门文章

  1. Closing Spring root WebApplicationContext
  2. 打开金蝶K/3控制台提示“连接中间层加密服务失败,请确认中间层加密服务已启动”...
  3. 了解EF CodeFirst的Migrator功能与Migrator.Net对比
  4. android NDK JNI设置自己的log输出函数
  5. Oracle 10.2.0.4和10.2.0.5 中 OEM bug 8350262
  6. Linux 基本网络配置 实验手册
  7. 免费的文本分析 文本挖掘软件工具
  8. LTE-V2X车联网无线通信技术发展
  9. Taints和Tolerations
  10. How to Enable Trace or Debug for APIs executed as SQL Script Outside of the Applications ?