初学opencv/滤波器

来源:互联网 发布:淘宝代付一天多少次 编辑:程序博客网 时间:2024/05/21 09:21

均值滤波:src输入图像,size为均值滤波器模板大小。以原图对应像素为中心的与模板中心重叠,将模板覆盖领域内全部像素求均值就是滤波后像素的值了。

高斯滤波:src输入图像,Ksize为高斯滤波器模板大小,sigmaX和sigmaY分别为高斯滤波在横线和竖向的滤波系数,第一点就是ksize的宽和高必须是奇数,一般在二维图像处理中,sigmaX和sigmaY取相等

中值滤波:src输入图像。ksize为均值滤波器模板大小,因为模板为正方形,所以只有一个参数.以原图对应像素为中心的与模板中心重叠,将模板覆盖领域内全部像素排序后的中间值就是滤波后像素的值了,所以模板长度必须为奇数

#coding:utf-8"""opencv滤波器"""import cv2import numpy as npimport matplotlib.pyplot as pltimg = cv2.imread('images/white.jpg',0)#cv2.blur低通滤波器的目标是降低图像的变化率,低通滤波器大小5*5blur = cv2.blur(img,(5,5))#cv2.boxFilter滤波器,-1表示输出图像深度与输入图像相同boxfilter = cv2.boxFilter(img,-1,(5,5))#cv2.GaussianBlur高斯滤波器,滤波器模板大小为奇数,1.5表示横向纵向滤波系数gaussianblur = cv2.GaussianBlur(img,(5,5),1.2)def salt(img,n):    for k in range(n):        #x坐标        i = int(np.random.rand()*img.shape[0])        #y坐标        j = int(np.random.rand()*img.shape[1])        if img.ndim == 2:            img[i,j] = 255        elif img.ndim == 3:            img[i,j,0] = 255            img[i,j,1] = 255            img[i,j,2] = 255    return imgcv2.imshow('original img',img)cv2.imshow('blur img',blur)cv2.imshow('boxfilter img',boxfilter)cv2.imshow('gaussianblur img',gaussianblur)salt = salt(img,1000)#cv2.medianBlur中值滤波器消除噪点medianblur = cv2.medianBlur(img,5)cv2.imshow('salt img',salt)cv2.imshow('medianblur img',medianblur)cv2.waitKey(0)cv2.destroyAllWindows()

结果:

原图:
这里写图片描述

blur:
这里写图片描述

salt:
这里写图片描述

medianblur:
这里写图片描述

原创粉丝点击