Python+OpenCV:图像平滑
二维卷积(图像滤波)
####################################################################################################
# 二维卷积(图像滤波)
def lmc_cv_2d_convolution():
"""
函数功能: 二维卷积(图像滤波).
与一维信号一样,图像也可以用各种低通滤波器(LPF)、高通滤波器(HPF)等进行滤波。
低通滤波器(LPF)有助于消除噪音,模糊图像等。
高通滤波器(HPF)滤波器有助于在图像中找到边缘。
"""
# 读取图像
image = lmc_cv.imread('D:/99-Research/Python/Image/Lena.jpg')
image = lmc_cv.cvtColor(image, lmc_cv.COLOR_RGB2BGR)
# 二维卷积(图像滤波)
kernel = np.ones((5, 5), np.float32) / 25
filter_image = lmc_cv.filter2D(image, -1, kernel)
# 显示图像
pyplot.figure('Image Display')
pyplot.subplot(121)
pyplot.imshow(image)
pyplot.title('Original')
pyplot.xticks([])
pyplot.yticks([])
pyplot.subplot(122)
pyplot.imshow(filter_image)
pyplot.title('Averaging')
pyplot.xticks([])
pyplot.yticks([])
pyplot.show()
# 根据用户输入保存图像
if ord("q") == (lmc_cv.waitKey(0) & 0xFF):
# 销毁窗口
pyplot.close()
return
![](https://img-blog.csdnimg.cn/20201114163140868.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWJpbmc4NjA5,size_16,color_FFFFFF,t_70)
图像模糊(图像平滑)
####################################################################################################
# 模糊图像(平滑图像)
def lmc_cv_blurring_image(index):
"""
函数功能: 模糊图像(平滑图像).
图像模糊是通过低通滤波核卷积图像来实现, 这对消除噪音很有帮助。
它实际上从图像中去除高频内容(例如:噪声、边缘), 所以在这个操作中边缘会模糊一点(也有模糊技术不会模糊边缘)。
OpenCV提供了四种主要的模糊技术:
均值模糊(Averaging Blurring)、高斯模糊(Gaussian Blurring)、中值模糊(Median Blurring)、双边模糊(Bilateral Filtering)。
"""
# 读取图像
image = lmc_cv.imread('D:/99-Research/Python/Image/Plaid.jpg')
image = lmc_cv.cvtColor(image, lmc_cv.COLOR_RGB2BGR)
# 显示图像
pyplot.figure('Image Display')
pyplot.subplot(121)
pyplot.imshow(image)
pyplot.title('Original Image')
pyplot.xticks([])
pyplot.yticks([])
pyplot.subplot(122)
pyplot.xticks([])
pyplot.yticks([])
# 均值模糊(Averaging Blurring)
if 0 == index:
blur_image = lmc_cv.blur(image, (5, 5))
pyplot.imshow(blur_image)
pyplot.title('Averaging Blurring')
# 高斯模糊(Gaussian Blurring)
if 1 == index:
blur_image = lmc_cv.GaussianBlur(image, (5, 5), 0.5, 0.5, lmc_cv.BORDER_DEFAULT)
pyplot.imshow(blur_image)
pyplot.title('Gaussian Blurring')
# 中值模糊(Median Blurring)
if 2 == index:
blur_image = lmc_cv.medianBlur(image, 5)
pyplot.imshow(blur_image)
pyplot.title('Median Blurring')
# 双边模糊(Bilateral Filtering)
if 3 == index:
blur_image = lmc_cv.bilateralFilter(image, 9, 75, 75, lmc_cv.BORDER_DEFAULT)
pyplot.imshow(blur_image)
pyplot.title('Bilateral Blurring')
# 显示窗口
pyplot.show()
# 根据用户输入保存图像
if ord("q") == (lmc_cv.waitKey(0) & 0xFF):
# 销毁窗口
pyplot.close()
return
![](https://img-blog.csdnimg.cn/20201114171047623.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWJpbmc4NjA5,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2020111417110644.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWJpbmc4NjA5,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/2020111417111927.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWJpbmc4NjA5,size_16,color_FFFFFF,t_70)
![](https://img-blog.csdnimg.cn/20201114171128547.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpdWJpbmc4NjA5,size_16,color_FFFFFF,t_70)