求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 


业务架构设计
4月18-19日 在线直播



基于UML和EA进行系统分析设计
4月25-26日 北京+在线



AI 智能化软件测试方法与实践
5月23-24日 上海+在线
 
追随技术信仰

随时听讲座
每天看新闻
 
 
OpenCV 教程
1. OpenCV 简介
2. OpenCV 安装
3. OpenCV 安装(C++)
4. OpenCV 入门实例
5. OpenCV 基础模块
6. OpenCV 图像处理基础
7. OpenCV 图像基本操作
8. OpenCV 图像算术运算
9. OpenCV 图像阈值处理
10. OpenCV 图像平滑处理
11. OpenCV 图像形态学操作
12. OpenCV 图像边缘检测
13. OpenCV 图像轮廓检测
14. OpenCV 图像直方图
15. OpenCV 视频处理
16. OpenCV 视频目标跟踪 (MeanShift, CamShift)
 
 
目录
OpenCV 图像形态学操作
37 次浏览
2次  

图像形态学操作是图像处理中的一种重要技术,主要用于处理二值图像(即黑白图像)。

OpenCV 中的图像形态学操作是图像处理中的重要工具,通过腐蚀、膨胀、开运算、闭运算和形态学梯度等操作,可以实现对图像的噪声去除、对象分离、边缘检测等效果。掌握这些操作有助于更好地处理和分析图像数据。

以下是 OpenCV 中常用的形态学操作及其函数:

1. 腐蚀 (cv2.erode())

腐蚀操作是一种缩小图像中前景对象的过程。

腐蚀操作通过将结构元素与图像进行卷积,只有当结构元素完全覆盖图像中的前景像素时,中心像素才会被保留,否则会被腐蚀掉。

函数原型

cv2.erode(src, kernel, iterations=1)

  • src: 输入图像,通常是二值图像。

  • kernel: 结构元素,可以自定义或使用 cv2.getStructuringElement() 生成。

  • iterations: 腐蚀操作的次数,默认为1。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.png', 0)

# 定义结构元素
kernel = np.ones((5,5), np.uint8)

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

# 显示结果
cv2.imshow('Eroded Image', eroded_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

腐蚀操作会使图像中的前景对象变小,边缘被腐蚀掉,常用于去除噪声或分离连接的对象。

2. 膨胀 (cv2.dilate())

膨胀操作与腐蚀相反,它是一种扩大图像中前景对象的过程。

膨胀操作通过将结构元素与图像进行卷积,只要结构元素与图像中的前景像素有重叠,中心像素就会被保留。

函数原型

cv2.dilate(src, kernel, iterations=1)

  • src: 输入图像,通常是二值图像。

  • kernel: 结构元素,可以自定义或使用 cv2.getStructuringElement() 生成。

  • iterations: 膨胀操作的次数,默认为1。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.png', 0)

# 定义结构元素
kernel = np.ones((5,5), np.uint8)

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

# 显示结果
cv2.imshow('Dilated Image', dilated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

膨胀操作会使图像中的前景对象变大,边缘被扩展,常用于填补前景对象中的空洞或连接断裂的对象。

3. 开运算 (cv2.morphologyEx() with cv2.MORPH_OPEN)

开运算是先腐蚀后膨胀的组合操作。

开运算主要用于去除图像中的小噪声或分离连接的对象。

函数原型

cv2.morphologyEx(src, op, kernel)

  • src: 输入图像,通常是二值图像。

  • op: 形态学操作类型,开运算使用 cv2.MORPH_OPEN。

  • kernel: 结构元素,可以自定义或使用 cv2.getStructuringElement() 生成。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.png', 0)

# 定义结构元素
kernel = np.ones((5,5), np.uint8)

# 开运算
opened_image = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

# 显示结果
cv2.imshow('Opened Image', opened_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

开运算可以去除图像中的小噪声,同时保留图像中的主要前景对象。

4. 闭运算 (cv2.morphologyEx() with cv2.MORPH_CLOSE)

闭运算是先膨胀后腐蚀的组合操作。

闭运算主要用于填补前景对象中的小孔或连接断裂的对象。

函数原型

cv2.morphologyEx(src, op, kernel)

  • src: 输入图像,通常是二值图像。

  • op: 形态学操作类型,闭运算使用 cv2.MORPH_CLOSE。

  • kernel: 结构元素,可以自定义或使用 cv2.getStructuringElement() 生成。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.png', 0)

# 定义结构元素
kernel = np.ones((5,5), np.uint8)

# 闭运算
closed_image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)

# 显示结果
cv2.imshow('Closed Image', closed_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

闭运算可以填补前景对象中的小孔,同时保留图像中的主要前景对象。

5. 形态学梯度 (cv2.morphologyEx() with cv2.MORPH_GRADIENT)

形态学梯度是膨胀图像与腐蚀图像的差值。

形态学梯度主要用于提取图像中前景对象的边缘。

函数原型

cv2.morphologyEx(src, op, kernel)

  • src: 输入图像,通常是二值图像。

  • op: 形态学操作类型,形态学梯度使用 cv2.MORPH_GRADIENT。

  • kernel: 结构元素,可以自定义或使用 cv2.getStructuringElement() 生成。

实例

import cv2
import numpy as np

# 读取图像
image = cv2.imread('image.png', 0)

# 定义结构元素
kernel = np.ones((5,5), np.uint8)

# 形态学梯度
gradient_image = cv2.morphologyEx(image, cv2.MORPH_GRADIENT, kernel)

# 显示结果
cv2.imshow('Gradient Image', gradient_image)
cv2.waitKey(0)
cv2.destroyAllWindows()


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



37 次浏览
2次