初识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: 平滑图像的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV-Python 图像平滑处理2:blur函数及滤波案例
OpenCV-Python 图像平滑处理2:blur函数及滤波案例
OpenCV-Python 图像平滑处理3:boxFilter函数详解及均值滤波案例