初识OpenCV-Python - 007: 平滑图像

Posted august2019

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识OpenCV-Python - 007: 平滑图像相关的知识,希望对你有一定的参考价值。

本节内容主要将如何平滑图像。如通过低通道滤波模糊图像。或者自定义滤波处理图像。

import cv2
import numpy as np
from matplotlib import pyplot as plt

img = cv2.imread(r‘C: ootlearnpythonopencvTestimgopencvLog.jpg‘)

kernel = np.ones((5,5),np.float32)/25
‘‘‘
2D滤波函数。
dst=cv2.filter2D(src,ddepth,kernel[,dst[,anchor[,delta[,borderType]]]])
src:原图像
dst:目标图像,与原图像尺寸和通过数相同
ddepth: 目标图像的所需深度(-1表示输出图像与原图像有相同的深度)
kernel: 卷积核,单通道浮点矩阵;如果要将不同的内核应用于不同的通道,请使用拆分将图像拆分为单独的颜色平面,然后单独处理它们。
anchor: 内核的锚点,指示内核中过滤点的相对位置;锚应位于内核中。默认值(-1,-1)表示锚位于内核中心。
detal: 在将它们存储在dst之前,将可选值添加到已过滤的像素中。类似于偏置。
borderType: 像素外推法。
‘‘‘
dst = cv2.filter2D(img,-1,kernel)
‘‘‘
均值模糊
‘‘‘
blur = cv2.blur(img,(5,5))

‘‘‘
高斯模糊
‘‘‘
gaussianBlur = cv2.GaussianBlur(img,(5,5),0)

‘‘‘
中值模糊
‘‘‘
median = cv2.medianBlur(img,5)
‘‘‘
双边滤波(高斯模糊的高级版本。去噪同时保持边缘锐化)
‘‘‘
bilBlur = cv2.bilateralFilter(img,9,75,75)
plt.subplot(161),plt.imshow(img),plt.title(‘Original‘)
plt.xticks([]),plt.yticks([])
plt.subplot(162),plt.imshow(dst),plt.title(‘Averaging‘)
plt.xticks([]),plt.yticks([])
plt.subplot(163),plt.imshow(blur),plt.title(‘Blur‘)
plt.xticks([]),plt.yticks([])
plt.subplot(164),plt.imshow(gaussianBlur),plt.title(‘GaussianBlur‘)
plt.xticks([]),plt.yticks([])
plt.subplot(165),plt.imshow(median),plt.title(‘median‘)
plt.xticks([]),plt.yticks([])
plt.subplot(166),plt.imshow(bilBlur),plt.title(‘bilBlur‘)
plt.xticks([]),plt.yticks([])
plt.show()

图像结果:
技术图片

 

 

以上是关于初识OpenCV-Python - 007: 平滑图像的主要内容,如果未能解决你的问题,请参考以下文章

2. OpenCV-Python——阈值平滑处理形态学操作

OpenCV-Python 图像平滑处理2:blur函数及滤波案例

OpenCV-Python 图像平滑处理2:blur函数及滤波案例

OpenCV-Python 图像平滑处理3:boxFilter函数详解及均值滤波案例

OpenCV-Python 图像平滑处理3:boxFilter函数详解及均值滤波案例

初识OpenCV-Python - 001