opencv_python学习笔记十三

16 图像平滑

通过低通滤波器对图像进行模糊

通过自定义滤波器对图像进行卷积

 

def filter2D(src, #输入图像

ddepth, #图像深度

kernel, #卷积核,单通道浮点矩阵

dst=None, #输出图像

anchor=None, #一个被滤波的点在核内的位置(中心)

delta=None,

borderType=None)#边界类型

 

def ones(shape, #数组的形状

dtype=None, #数组的数据类型

order='C'): #数组元素在内存中的排列方式,c表示c语言的
       a = empty(shape, dtype, order)
    multiarray.copyto(a, 1, casting='unsafe')
    return a

 

 

 

 

示例代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/11/17 10:54
# @Author  : Retacn
# @Site    : 图像平滑  卷积
# @File    : imageFilter.py
# @Software: PyCharm

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

img=cv2.imread('test.jpg')
kernel=np.ones((5,5),#数组形状
               
np.float32)/25#数组的数据类型

#print(kernel)
dst=cv2.filter2D(img,-1,kernel)

plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]),plt.yticks([])

plt.subplot(122),plt.imshow(dst),plt.title('Averaging')
plt.xticks([]),plt.yticks([])

plt.show()

 

 

图像模糊(图像平滑)

使用低通滤波器可以实现图像模糊

1 平均

 

函数原型

def blur(src, #源图像

   ksize, #内核大小

   dst=None, #输出图像

   anchor=None, #中心锚点

   borderType=None)# 边界模式

2 高斯模糊

 

函数原型

def GaussianBlur(src, #输入图像

ksize, #高斯滤波模版大小

sigmaX, #横向滤波系数

dst=None, #输出图像

sigmaY=None,#纵向滤波系数 

borderType=None)

 

3 中值模糊

def medianBlur(src, #源图像

ksize, #中值滤波器的模版的大小

dst=None)#输出图像

 

4 双边滤波

def bilateralFilter(src, #输入图像

d, #每个像素邻域的直径

sigmaColor, #颜色空间的标准偏差

sigmaSpace, #坐标空间的标准偏差

dst=None, #输出图像

borderType=None)#边缘点插值类型

 

示例代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2016/11/17 13:14
# @Author  : Retacn
# @Site    :  平均,对图像进行均值滤波
# @File    : imageBlur.py
# @Software: PyCharm

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

#读入图像
img=cv2.imread("../test.jpg")
#均值滤波
#blur=cv2.blur(img,(5,5))

#高斯模糊
#blur=cv2.GaussianBlur(img,(5,5),0)

#中值模糊
#blur=cv2.medianBlur(img,5)

#双边滤波
blur=cv2.bilateralFilter(img,9,75,75)

#原图像
plt.subplot(121),plt.imshow(img),plt.title("Original")
plt.xticks([]),plt.yticks([])

#平均后
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]),plt.yticks([])
plt.show()

posted @ 2016-11-21 16:32  retacn_yue  阅读(211)  评论(0编辑  收藏  举报