详解OpenCV开闭运算
开运算(Opening)和闭运算(Closing)是形态学操作中的两种常见操作,它们分别由腐蚀和膨胀操作组成。这些操作通常用于图像的预处理和分割。
1. 开运算(Opening)
开运算是先进行腐蚀操作,然后进行膨胀操作。它通常用于去除图像中的噪声或分离连接的对象。
python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('opening_image.jpg', 0) # 以灰度模式读取图像
# 定义开运算核
kernel = np.ones((5, 5), np.uint8)
# 应用开运算操作
opening = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Opening', opening)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,cv2.morphologyEx 函数用于执行形态学操作,其中 cv2.MORPH_OPEN 表示开运算。
2. 闭运算(Closing)
闭运算是先进行膨胀操作,然后进行腐蚀操作。它通常用于连接图像中的区域或填充空洞。
python
import cv2
import numpy as np
# 读取图像
image = cv2.imread('closing_image.jpg', 0) # 以灰度模式读取图像
# 定义闭运算核
kernel = np.ones((5, 5), np.uint8)
# 应用闭运算操作
closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel)
# 显示结果
cv2.imshow('Original Image', image)
cv2.imshow('Closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码中,cv2.morphologyEx 函数用于执行形态学操作,其中 cv2.MORPH_CLOSE 表示闭运算。
开运算和闭运算常常结合使用,可以有效地去除噪声、连接相邻的区域、填充空洞等。在实际应用中,选择合适的核大小和形状对于操作的效果至关重要。这些操作在图像处理中的许多任务中都起着重要的作用,例如图像分割、轮廓提取等。
该博文为原创文章,未经博主同意不得转载。本文章博客地址:https://blog.csdn.net/weixin_39145520/article/details/134742725