OpenCV 入门教程:膨胀和腐蚀操作

news2025/1/11 15:04:35

OpenCV 入门教程:膨胀和腐蚀操作

  • 导语
  • 一、膨胀操作
  • 二、腐蚀操作
  • 三、示例应用
    • 3.1 图像增强
    • 3.2 边缘检测
  • 总结

导语

膨胀和腐蚀是图像处理中常用的形态学操作,用于改变图像的形状和结构。在 OpenCV 中,膨胀和腐蚀是基于结构元素的像素操作,可以用于图像增强、边缘检测、图像分割等多个领域。本文将以膨胀和腐蚀操作为中心,为你介绍使用 OpenCV 进行形态学操作的基本步骤和实例。

😃😄 ❤️ ❤️ ❤️

一、膨胀操作

膨胀操作是将图像中的物体区域进行扩展的过程。以下是一个使用膨胀操作的示例代码:

import cv2
import numpy as np

# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 定义膨胀操作的结构元素
kernel = np.ones((3, 3), np.uint8)

# 进行膨胀操作
dilated_image = cv2.dilate(image, kernel, iterations=1)

在上述示例中,我们使用 dilate 函数对灰度图像进行膨胀操作。 kernel 参数定义了膨胀操作的结构元素,可以是矩形、椭圆或自定义形状。 iterations 参数表示膨胀的次数,较大的值将产生更明显的膨胀效果。

二、腐蚀操作

腐蚀操作是将图像中的物体区域进行收缩的过程。以下是一个使用腐蚀操作的示例代码:

import cv2
import numpy as np

# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 定义腐蚀操作的结构元素
kernel = np.ones((3, 3), np.uint8)

# 进行腐蚀操作
eroded_image = cv2.erode(image, kernel, iterations=1)

在上述示例中,我们使用 erode 函数对灰度图像进行腐蚀操作。 kernel 参数定义了腐蚀操作的结构元素,可以是矩形、椭圆或自定义形状。 iterations 参数表示腐蚀的次数,较大的值将产生更明显的腐蚀效果。

三、示例应用

现在,我们来看一些常见的示例应用,演示膨胀和腐蚀操作的效果:

3.1 图像增强

使用膨胀和腐蚀操作,可以对图像进行增强,改善图像的结构和细节。以下是一个示例代码:

import cv2
import numpy as np

# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 定义膨胀和腐蚀操作的结构元素
kernel = np.ones((3, 3), np.uint8)

# 进行膨胀和腐蚀操作
dilated_image = cv2.dilate(image, kernel, iterations=1)
eroded_image = cv2.erode(image, kernel, iterations=1)

这个示例将加载名为" image.jpg "的灰度图像文件,并分别使用膨胀和腐蚀操作对图像进行增强。

原图:
在这里插入图片描述
膨胀效果展示:
可以看到点变大了。
在这里插入图片描述
腐蚀效果展示:
可以看到点点变小了。
在这里插入图片描述

3.2 边缘检测

膨胀和腐蚀操作可以用于边缘检测,提取图像中的边缘信息。以下是一个示例代码:

import cv2
import numpy as np

# 读取图像文件
image = cv2.imread('image.jpg', cv2.IMREAD_GRAYSCALE)

# 定义膨胀和腐蚀操作的结构元素
kernel = np.ones((3, 3), np.uint8)

# 进行膨胀和腐蚀操作
dilated_image = cv2.dilate(image, kernel, iterations=1)
eroded_image = cv2.erode(image, kernel, iterations=1)

# 提取边缘信息
edges = cv2.absdiff(dilated_image, eroded_image)

这个示例将加载名为" image.jpg "的灰度图像文件,并分别使用膨胀和腐蚀操作对图像进行处理,然后通过计算差值得到边缘信息。

总结

通过本文的介绍,你已经了解了使用 OpenCV 进行膨胀和腐蚀操作的基本步骤。你学会了使用 dilate 函数进行膨胀操作,使用 erode 函数进行腐蚀操作,并通过示例应用了解了图像增强和边缘检测的操作。

膨胀和腐蚀是图像处理中常用的形态学操作,可以用于图像增强、边缘检测、图像分割等多个领域。通过调整结构元素的大小和形状,你可以根据实际需求获得所需的效果。

祝你在使用 OpenCV 进行膨胀和腐蚀操作的过程中取得成功!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/734190.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一零六三、进程调度算法模拟 (C语言实现)

目录 背景 程序实现 实现效果 背景 1、根据算法要求从键盘输入不少于四个进程信息(包括进程名称、进程到达时间、估计运行时间),RR算法输入不少于两种时间片的大小 2、输出进程的调度顺序、完成时间、周转时间、平均周转时间、平均带权周转…

Openlayers实战:点击某点,overlay显示经纬度坐标

在之前的实战中,我们在某个固定的位置显示鼠标位置的经纬度, 今天改变一种形式,即采用overlay的方式,点击某处,获得到经纬度坐标,显示在overlay层上面。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特…

23款迈巴赫S480升级原厂主动式氛围灯+电动后门+前后手势感应

23款迈巴赫S480升级原厂主动式氛围灯原厂电动后门原厂手势控制 新车刚提,原厂配置升级,全新配件 配件齐全,准备上车 全套主动式氛围灯配件 氛围灯模块 前排驾驶位顶棚的手势感应 手势感应电脑模块 后排顶棚的手势感应 电动后门配件有锁机、电…

基于simulink使用光流法跟踪汽车(附源码)

一、前言 此示例演示如何使用光流估计在视频序列中检测和跟踪汽车。 二、模型 下图显示了使用光流跟踪汽车模型: 三、用光流结果跟踪汽车 该模型使用光流估计技术来估计视频序列的每一帧中的运动矢量。通过阈值化运动矢量,该模型创建包含移动对象斑点…

mysql学习--使用navicat查看数据库密码

数据库通常分为两种:关系型数据库和非关系型数据库,关系型数据库通常会建立很多二维数据表,形成一对一、一对多、多对多等关系;之后利用SQL语句查询我们所需要的数据;非关系型数据库基于Key-Value的对应关系,并且查询的…

机器学习 day24(多类分类模型,Softmax回归算法及其损失函数)

多类分类 多类分类问题仍然是分类问题,所以预测y的可能结果是少量的,而不是无穷多个,且对于多类分类它>2 如上图:左侧为二分类,右侧为多分类,可以通过决策边界来划分区域 Softmax回归算法 …

记录--在高德地图实现卷帘效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 介绍 今天介绍一个非常简单的入门级小案例,就是地图的卷帘效果实现,各大地图引擎供应商都有相关示例,很奇怪高德居然没有,我看了下文档发现其实也是可以…

Fastpillars论文解读

本论文是美团在pointpillar算法的基础上的改进。 主要改进点分为一下两个: 1.引入注意力机制对pillar内的特征进行提取,改善直接maxpooling导致的细粒度信息丢失。 2.参考CSPNet和RepVGG构建了一个全新的轻量化backbone。 一、pillar注意力机制特征提…

怎么把MP4转换成GIF?分享几个方法轻松转换!

如何将mp4转换为gif?在分享视频剪辑素材到社交媒体时,许多人会选择将其转换为gif格式。这是因为GIF文件加载速度更快,文件大小更小。此外,将MP4转换为GIF也方便人们在电子邮件和聊天应用程序中发送动态图像。下面,我们…

【Linux】文件描述符 (上篇)

文章目录 📖 前言1. 文件的预备知识2. 复习C语言的文件操作3. Linux系统级文件接口3.1 open、 close、 read、 write 接口:3.2 内核当中实现的映射关系:3.3 如何理解Linux下一切皆文件: 📖 前言 本章开始,…

python绘制带有误差棒的条形图

文章目录 bar和barh加入误差棒定制误差棒颜色 bar和barh 在matplotlib中,通过bar和barh来绘制条形图,分别表示纵向和横向的条形图。二者的输入数据均主要为高度x和标签height,示例如下 import matplotlib.pyplot as plt import numpy as np…

MySQL CDC技术方案梳理

本篇主要探讨MySQL数据同步的各类常见技术方案及优劣势对比分析,从而更加深层次的理解方案,进而在后续的实际业务中,更好的选择方案。 1 CDC概念 CDC即Change Data Capture,变更数据捕获,即当数据发生变更时&#xff…

Ubuntu: scp命令使用及Permission denied错误解决方案

scp命令介绍 scp 命令用于 Linux 之间复制文件和目录。scp 是 secure copy 的缩写, scp 是 Ubuntu 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp local_file remote_usernameremote_ip:remote_folder scp /Users/X.pem root192.168.1.247:/usr/local/ssl Permission…

java项目之高校校园点餐系统(ssm+mysql+jsp)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的闲一品交易平台。技术交流和部署相关看文末! 开发环境: 后端: 开发语言:Java 框架&#…

傻瓜式一键生成主子表

文章目录 傻瓜式一键生成主子表 简介创建主子表示例 根据已有主表创建子表示例 创建空属性主子表示例 总结 傻瓜式一键生成主子表 直接将xml导入到Studio里即可。下载文件连接: CSDN链接阿里云盘 简介 很多同学在创建主子表时,都会可能遇到如下一些问…

日本留学托福要求多少分才及格呢?

日本有悠久的历史和文化,吸引了越来越多的留学生前往探索和学习。那么,日本留学托福要求多少分才及格呢? 日本留学托福成绩要求 综合类:通常要求申请者取得托福总分在80以上,各项分数要求分别为口语20以上&#xff0c…

LinuxI2C应用编程——I2C-Tools的使用

文章目录 I2C 硬件框架I2C 软件框架I2C协议(传输数据的格式)写操作读操作I2C 信号 SMBus 协议概述硬件和软件上的区别SMBus 协议分析符号的含义SMBus Quick CommandSMBus Receive ByteSMBus Send ByteSMBus Read ByteSMBus Read WordSMBus Write ByteSMB…

11_Linux阻塞与非阻塞

目录 阻塞和非阻塞IO简介 等待队列 等待队列头 等待队列项 轮询 Linux驱动下的poll操作函数 阻塞式访问IO实验 阻塞式访问IO驱动程序编写 运行测试 非阻塞式IO实验 运行测试 阻塞和非阻塞IO简介 阻塞和非阻塞IO是Linux驱动开发里面很常见的两种设备访问模式,在编写…

充分利用测试自动化的 10 个最佳实践

目录 前言: 实践1:手动和自动测试结合 实践2:特别注意回归测试 实践3:包括端到端测试 实践4:为自动化测试提供集体所有权 实践5:详细计划与测试相关的所有流程 实践6:选择适合您需求的自…

Python随机生成2堆三维点云点,有固定的重复率并可视化

Python随机生成2堆三维点云点,有固定的重复率并可视化 1. 效果图2. 源码 这篇博客源于博友的提问,刚好电脑在旁边没啥事,那就开整吧。 np.random 生成随机点(提供了俩种方法,1. xyz限制都是0~MAX值,2. xyz分…