在OpenCV中,图像腐蚀(Erosion)和膨胀(Dilation)是常用的图像形态学操作。它们可以用于去除噪声、填充空洞、提取图像中的结构等。下面是几种常见的腐蚀和膨胀操作:
腐蚀操作: 图像腐蚀可以通过函数cv2.erode()
来实现。腐蚀操作会使图像中的物体边界收缩,并尽量保持物体的整体形状。
示例代码:
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg')
# 定义腐蚀核大小
kernel_size = (5, 5)
# 进行腐蚀操作
eroded_image = cv2.erode(image, kernel_size, iterations=1)
# 显示腐蚀后的图像
cv2.imshow('Eroded Image', eroded_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 膨胀操作: 图像膨胀可以通过函数
cv2.dilate()
来实现。膨胀操作会使图像中的物体边界膨胀,并尽量保持物体的整体形状。
示例代码:
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg')
# 定义膨胀核大小
kernel_size = (5, 5)
# 进行膨胀操作
dilated_image = cv2.dilate(image, kernel_size, iterations=1)
# 显示膨胀后的图像
cv2.imshow('Dilated Image', dilated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
- 自定义核: 除了使用默认的矩形核外,还可以使用自定义的核进行腐蚀和膨胀操作。通过
cv2.getStructuringElement()
函数可以创建各种形状的核。
示例代码:
import cv2
import numpy as np
# 读取图像
image = cv2.imread('image.jpg')
# 创建自定义核
kernel = np.array([[0, 1, 0],
[1, 1, 1],
[0, 1, 0]], dtype=np.uint8)
# 进行腐蚀操作
eroded_image = cv2.erode(image, kernel, iterations=1)
# 进行膨胀操作
dilated_image = cv2.dilate(image, kernel, iterations=1)
# 显示腐蚀和膨胀后的图像
cv2.imshow('Eroded Image', eroded_image)
cv2.imshow('Dilated Image', dilated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上是在OpenCV中常用的图像腐蚀和膨胀操作的介绍。根据具体的需求,可以选择适合的核大小和类型,以获得所需的效果。外网上资料太乱太杂,所以UP重新整理了一份500G的 人工智能 zi liao 包,内含::深度学习神经网络+CV计算机视觉学习(两大框架pytorch/tensorflow+源码课件笔记)+NLP等+...v....❤公众,,,号:AI技术星球 回复暗号 123