pythonopencv图像形态_Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算...

前文传送门:

引言

今天是图形处理形态学的最后一篇,我们介绍顶帽运算和黑帽运算。

建议先阅读前面两篇图像处理的内容:

形态学之顶帽运算

图像处理顶帽运算是一个获取图像噪声的运算,它是由原始图像减去图像开运算而得到的结果:

顶帽运算 = 原始图像 - 开运算

图像顶帽运算同样是使用形态学扩展函数 morphologyEx() ,它的参数是 MORPH_TOPHAT ,示例如下:

import cv2 as cv

import numpy as np

import matplotlib.pyplot as plt

# 读取图片

source = cv.imread("demo_noise_white.jpg", cv.IMREAD_GRAYSCALE)

# 设置卷积核

kernel = np.ones((5, 5), np.uint8)

# 开运算

open = cv.morphologyEx(source, cv.MORPH_OPEN, kernel)

# 顶帽运算

dst = cv.morphologyEx(source, cv.MORPH_TOPHAT, kernel)

# 显示结果

titles = ['Source Img','Open Img', 'Tophat Img']

images = [source, open, dst]

# matplotlib 绘图

for i in range(3):

plt.subplot(1, 3, i+1), plt.imshow(images[i],'gray')

plt.title(titles[i])

plt.xticks([]),plt.yticks([])

plt.show()

形态学之黑帽运算

图像处理顶帽运算是一个获取图像内部的小孔,或者前景色中的小黑点的运算。

它是由图像闭运算减去原始图像的操作:

黑帽运算 = 闭运算图像 - 原始图像

图像顶帽运算同样是使用形态学扩展函数 morphologyEx() ,它的参数是 MORPH_BLACKHAT ,示例如下:

import cv2 as cv

import numpy as np

import matplotlib.pyplot as plt

# 读取图片

source = cv.imread("demo_noise_black.jpg", cv.IMREAD_GRAYSCALE)

# 设置卷积核

kernel = np.ones((5, 5), np.uint8)

# 黑帽运算

dst = cv.morphologyEx(source, cv.MORPH_BLACKHAT, kernel)

# 构造显示结果数组

titles = ['Source Img', 'Black Img']

images = [source, dst]

# matplotlib 绘图

for i in range(2):

plt.subplot(1, 2, i+1), plt.imshow(images[i],'gray')

plt.title(titles[i])

plt.xticks([]),plt.yticks([])

plt.show()

今天的内容比较短,至此,图像形态学的几个基础的运算已经全部介绍完毕,希望各位同学能理解这几个运算的原理,而不是仅仅知道了几个参数或者说几个方法的调用。

示例代码

如果有需要获取源码的同学可以在公众号回复「OpenCV」进行获取。

你可能感兴趣的:(pythonopencv图像形态_Python 图像处理 OpenCV (10):图像处理形态学之顶帽运算与黑帽运算...)