【Python】【Opencv】形态学操作cv2.morphologyEx()函数详解和示例,实现腐蚀、膨胀、闭和开等运算
形态学操作是图像处理中的基础方法,主要有膨胀、腐蚀、开运算、闭运算和顶帽、黑帽等。cv2.morphologyEx()函数可以实现这些操作。
函数原型:cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]])
参数说明:
- src: 输入图像
- op: 形态学操作类型
- kernel: 定义形态学操作的结构元素
- dst: 输出图像
- anchor: 内核的锚点,其默认值为(-1,-1)表示锚点位于内核中心
- iterations: 迭代次数,其默认值为1
- borderType: 边界类型,其默认值为cv2.BORDER\_CONSTANT,表示边界使用常量值填充
- borderValue: 边界值,其默认值为0,表示当边界类型为常量时的边界颜色
op参数可以设置为以下形态学操作类型:
- cv2.MORPH\_OPEN: 开运算
- cv2.MORPH\_CLOSE: 闭运算
- cv2.MORPH\_GRADIENT: 梯度运算
- cv2.MORPH\_TOPHAT: 顶帽运算
- cv2.MORPH\_BLACKHAT: 黑帽运算
- cv2.MORPH\_ERODE: 腐蚀
- cv2.MORPH\_DILATE: 膨胀
以下是使用cv2.morphologyEx()函数实现腐蚀和膨胀的Python代码示例:
import cv2
import numpy as np
# 读取图像
image = cv2.imread('example.jpg', 0)
# 创建结构元素,这里使用5x5的矩形
kernel = np.ones((5, 5), np.uint8)
# 腐蚀操作
eroded = cv2.morphologyEx(image, cv2.MORPH_ERODE, kernel)
# 膨胀操作
dilated = cv2.morphologyEx(image, cv2.MORPH_DILATE, kernel)
# 显示结果
cv2.imshow('Original', image)
cv2.imshow('Eroded', eroded)
cv2.imshow('Dilated', dilated)
cv2.waitKey(0)
cv2.destroyAllWindows()
在这个例子中,首先读取了一张图像并转换为灰度图。然后创建了一个5x5的结构元素,用于形态学操作。接着使用cv2.morphologyEx()函数分别执行腐蚀和膨胀操作。最后,使用cv2.imshow()函数显示原图以及处理后的结果。
评论已关闭