![6044416-092066e6999cc06d.png](https://upload-images.jianshu.io/upload_images/6044416-092066e6999cc06d.png)
image.png
![6044416-9c6c32e076ae4eae.png](https://upload-images.jianshu.io/upload_images/6044416-9c6c32e076ae4eae.png)
顶帽
def tophat_function(image):
gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
kernel = cv.getStructuringElement(cv.MORPH_RECT, (15, 15))
'''
op = cv.MORPH_TOPHAT(顶帽操作)
'''
dst = cv.morphologyEx(gray, cv.MORPH_TOPHAT, kernel)
cimage = np.array(gray.shape,np.uint8)
cimage = 100
dst = cv.add(dst,cimage)#增加亮度
cv.imshow("tophat",dst)
![6044416-6382861536edf969.png](https://upload-images.jianshu.io/upload_images/6044416-6382861536edf969.png)
增加亮度后的
![6044416-6b9c48e931358f07.png](https://upload-images.jianshu.io/upload_images/6044416-6b9c48e931358f07.png)
黑帽
#修改op即可
dst = cv.morphologyEx(gray, cv.MORPH_BLACKHAT, kernel)
![6044416-c29bb2932de19862.png](https://upload-images.jianshu.io/upload_images/6044416-c29bb2932de19862.png)
黑帽
![6044416-6bf3cb9e77a87e11.png](https://upload-images.jianshu.io/upload_images/6044416-6bf3cb9e77a87e11.png)
image.png
基本梯度
dst = cv.morphologyEx(gray, cv.MORPH_GRADIENT, kernel)
![6044416-5c2e2d071acc510e.png](https://upload-images.jianshu.io/upload_images/6044416-5c2e2d071acc510e.png)
基本梯度
内外梯度
def gradient_demo(image):
kernel = cv.getStructuringElement(cv.MORPH_RECT, (5, 5))
dm = cv.dilate(image, kernel)
em = cv.erode(image, kernel)
dst1 = cv.subtract(dm, image) # 外梯度
dst2 = cv.subtract(image, em) # 内梯度
cv.imshow("external_gradient", dst1)
cv.imshow("internal_gradient", dst2)
![6044416-f84d94396540bca2.png](https://upload-images.jianshu.io/upload_images/6044416-f84d94396540bca2.png)
内外梯度