代码 # -*- coding:utf-8 -*- import cv2 as cvimport sys def my_blur( image) :return cv.blur( image,( 3 ,3 )) , cv.blur( image,( 9 ,9 )) if __name__== '__main__' : # 读取图像并判断是否读取成功 img= cv.imread( './images/Gray.jpg' ) if img is None: print( 'Failed to read Gray.jpg.' ) sys.exit( ) img_sp= cv.imread( './images/GraySalt.jpg' ) if img_sp is None: print( 'Failed to read GraySalt.jpg.' ) sys.exit( ) img_gauss= cv.imread( './images/GrayGauss.jpg' ) if img_gauss is None: print( 'Failed to read GrayGauss.jpg.' ) sys.exit( ) img1, img2= my_blur( img) img_sp1, img_sp2= my_blur( img_sp) img_gauss1, img_gauss2= my_blur( img_gauss) # 展示结果 cv.imshow( 'Origin Image' , img) cv.imshow( '3 * 3 Blur Image' , img1) cv.imshow( '5 * 5 Blur Image' , img2) cv.imshow( 'Origin sp-noisy Image' , img_sp) cv.imshow( '3 * 3 sp-noisy Blur Image' , img_sp1) cv.imshow( '5 * 5 sp-noisy Blur Image' , img_sp2) cv.imshow( 'Origin gauss-noisy Image' , img_gauss) cv.imshow( '3 * 3 gauss-noisy Blur Image' , img_gauss1) cv.imshow( '5 * 5 gauss-noisy Blur Image' , img_gauss2) cv.waitKey( 0 ) cv.destroyAllWindows( ) ```! [ 在这里插入图片描述] ( https://i-blog.csdnimg.cn/direct/4a62db63440c447bab5abaa5f91236df.png! [ 在这里插入图片描述] ( https://i-blog.csdnimg.cn/direct/8038639ce95a4fdc81c87ef1c47ae264.png) cv2.blur 是 OpenCV 中实现均值滤波(归一化盒式滤波) 的核心函数,通过计算像素邻域内的平均值来平滑图像,适用于消除高斯噪声、降低图像细节复杂度等场景。 一、函数基本语法 python 运行 cv2.blur( src, ksize,dst = None,anchor = None,borderType = None) 参数说明 参数##含义 ## 必填 ##默认值 src##输入图像(可以是单通道灰度图或多通道彩色图,如 BGR 格式) ##是 ###- ksize##滤波核(卷积核)的尺寸,格式为 (width, height)(如 (3,3)、(5,5)) ##是 ##- dst##输出图像(可选,若不指定则返回新图像) ##否 ##None anchor##核的锚点(滤波时的参考点),默认 (-1,-1) 表示锚点在核中心 ##否 ##(-1, -1) borderType##边界填充方式(处理图像边缘像素),##默认 cv2.BORDER_DEFAULT ##否 cv2.BORDER_DEFAULT 返回值 返回与输入图像尺寸、通道数相同的滤波后图像(ndarray 格式)。 二、核心原理 均值滤波的本质是:对图像中每个像素,用其邻域(核大小)内所有像素的平均值替换该像素值。公式:! [ 在这里插入图片描述] ( https://i-blog.csdnimg.cn/direct/7a08f39f61734b56aba84afddfa11931.png) 核越大,平滑效果越强,但图像越模糊(细节丢失越多); 核尺寸通常取奇数(如3 ×3、5×5),避免像素偏移。