OpenCV中的形态学操作

2024-05-24 15:28
文章标签 opencv 操作 形态学

本文主要是介绍OpenCV中的形态学操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1. 腐蚀(Erosion):这个操作会“腐蚀”图像中的前景物体边界(即:使前景物体在图像中变小)。这是通过在图像中滑动一个结构元素,如果结构元素与前景物体的所有像素都相匹配,那么中心像素就保持不变,否则它就被腐蚀(设置为0)。腐蚀操作在去除小的噪声、断开两个连接在一起的物体等场景中很有用。
    img_eroded = cv2.erode(img, kernel)

  2. 膨胀(Dilation):这个操作与腐蚀操作相反,它会“膨胀”图像中的前景物体(即:使前景物体在图像中变大)。这是通过在图像中滑动一个结构元素,如果结构元素与前景物体的任何一个像素相匹配,那么中心像素就被膨胀(设置为1)。膨胀操作在连接两个分开的物体、关闭前景物体中的小洞等场景中很有用。
    img_dilated = cv2.dilate(img, kernel)

  3. 开运算(Opening):这个操作是先进行腐蚀操作,然后进行膨胀操作。开运算可以用来去除噪声。
    img_opened = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

  4. 闭运算(Closing):这个操作是先进行膨胀操作,然后进行腐蚀操作。闭运算可以用来关闭前景物体中的小洞或小黑点。
    img_closed = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

  5. 形态学梯度(Morphological Gradient):这个操作是膨胀操作和腐蚀操作的差别。结果会得到物体的边界。
    img_gradient = cv2.morphologyEx(img, cv2.MORPH_GRADIENT, kernel)

  6. 顶帽(Top Hat):这个操作是原始图像和开运算结果的差别。结果会得到比原始图像亮的区域。
    img_tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)

  7. 黑帽(Black Hat):这个操作是闭运算结果和原始图像的差别。结果会得到比原始图像暗的区域。
    img_blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)

这篇关于OpenCV中的形态学操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998795

相关文章

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

opencv 滚动条

参数介绍:createTrackbar( trackbarname , "hello" , &alpha_slider ,alpha_max ,  on_trackbar )  ;在标签中显示的文字(提示滑动条的用途) TrackbarName创建的滑动条要放置窗体的名字 “hello”滑动条的取值范围从 0 到 alpha_max (最小值只能为 zero).滑动后的值存放在

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

OpenCV结构分析与形状描述符(11)椭圆拟合函数fitEllipse()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C++11 算法描述 围绕一组2D点拟合一个椭圆。 该函数计算出一个椭圆,该椭圆在最小二乘意义上最好地拟合一组2D点。它返回一个内切椭圆的旋转矩形。使用了由[90]描述的第一个算法。开发者应该注意,由于数据点靠近包含的 Mat 元素的边界,返回的椭圆/旋转矩形数据

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作,接下来来看一下表的相关操作。 一、创建表 create

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

Verybot之OpenCV应用三:色标跟踪

下面的这个应用主要完成的是Verybot跟踪色标的功能,识别部分还是居于OpenCV编写,色标跟踪一般需要将图像的颜色模式进行转换,将RGB转换为HSV,因为对HSV格式下的图像进行识别时受光线的影响比较小,但是也有采用RGB模式来进行识别的情况,这种情况一般光线条件比较固定,背景跟识别物在颜色上很容易区分出来。         下面这个程序的流程大致是这样的: