使用cv2.morphologyEx()函数实现灰度图像的顶帽运算和底帽运算
时间: 2024-04-30 11:17:42 浏览: 13
顶帽运算和底帽运算是形态学图像处理中的两种基本运算,它们可以用来提取图像中的局部极值信息。在灰度图像中,顶帽运算可以用来提取亮度较高的区域,而底帽运算可以用来提取亮度较低的区域。在OpenCV中,可以使用cv2.morphologyEx()函数来实现这两种运算。
下面是使用cv2.morphologyEx()函数实现灰度图像的顶帽运算和底帽运算的代码:
```python
import cv2
import numpy as np
# 读取灰度图像
img = cv2.imread('gray.png', cv2.IMREAD_GRAYSCALE)
# 定义结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
# 实现顶帽运算
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
# 实现底帽运算
blackhat = cv2.morphologyEx(img, cv2.MORPH_BLACKHAT, kernel)
# 显示结果图像
cv2.imshow('Original', img)
cv2.imshow('Tophat', tophat)
cv2.imshow('Blackhat', blackhat)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在这段代码中,cv2.getStructuringElement()函数用来定义结构元素,cv2.MORPH_RECT表示使用矩形结构元素,(5, 5)表示结构元素的大小。然后,使用cv2.morphologyEx()函数来实现顶帽运算和底帽运算,其中第二个参数分别为cv2.MORPH_TOPHAT和cv2.MORPH_BLACKHAT。最后,使用cv2.imshow()函数来显示原始图像、顶帽运算结果和底帽运算结果。