1.1 均值滤波
简单的平均卷积操作
边框补0,每次选3 * 3个元素相加求平均值
python
# 导入OpenCV库,用于图像处理
import cv2
# 从matplotlib库中导入pyplot模块,用于绘制图像
from matplotlib import pyplot as plt
# 创建一个名为'window'的窗口,窗口大小自动调整
cv2.namedWindow('window', cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE: 窗口大小自动调整,不允许用户改变窗口大小
# 使用OpenCV的imread函数读取名为"mao.jpg"的图片,参数1表示读取彩色图像
cat = cv2.imread("mao.jpg", 1) # cat变量存储读取的图像数据,OpenCV默认以BGR格式读取
# 在名为'window'的窗口中显示图像
cv2.imshow('window', cat)
blur = cv2.blur(cat,(3,3)) #均值滤波
cv2.imshow('blur', blur)
# 等待按键事件,0表示无限期等待
key = cv2.waitKey(0)
# 检查按下的键是否是'q',如果是则销毁所有窗口
if key & 0xFF == ord('q'): # 0xFF是掩码,用于确保只检查最低8位
print("准备销毁窗口")
cv2.destroyAllWindows()

1.2 方框滤波
处理结果=cv2.boxFilter(原始图像,目标图像深度,核大小,normalize属性),目标图像深度是-1表示和原图像大小相同,效果几乎和均值滤波持平
true = 1 = 所有值相加 除以 矩阵元素的个数
false = 0 = 是k = 所有的元素相加,超过255时取255
python
# 导入OpenCV库,用于图像处理
import cv2
# 从matplotlib库中导入pyplot模块,用于绘制图像
from matplotlib import pyplot as plt
# 创建一个名为'window'的窗口,窗口大小自动调整
cv2.namedWindow('window', cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE: 窗口大小自动调整,不允许用户改变窗口大小
# 使用OpenCV的imread函数读取名为"mao.jpg"的图片,参数1表示读取彩色图像
cat = cv2.imread("mao.jpg", 1) # cat变量存储读取的图像数据,OpenCV默认以BGR格式读取
# 在名为'window'的窗口中显示图像
cv2.imshow('window', cat)
blur = cv2.blur(cat,(3,3)) #均值滤波
cv2.imshow('blur', blur)
box = cv2.boxFilter(cat,-1,(3,3),normalize=True) #方框滤波
cv2.imshow('box', box)
# 等待按键事件,0表示无限期等待
key = cv2.waitKey(0)
# 检查按下的键是否是'q',如果是则销毁所有窗口
if key & 0xFF == ord('q'): # 0xFF是掩码,用于确保只检查最低8位
print("准备销毁窗口")
cv2.destroyAllWindows()
1.3 高斯滤波

结果=所有对应的卷积核 * 相应的值 相加
python
# 导入OpenCV库,用于图像处理
import cv2
# 从matplotlib库中导入pyplot模块,用于绘制图像
from matplotlib import pyplot as plt
# 创建一个名为'window'的窗口,窗口大小自动调整
cv2.namedWindow('window', cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE: 窗口大小自动调整,不允许用户改变窗口大小
# 使用OpenCV的imread函数读取名为"mao.jpg"的图片,参数1表示读取彩色图像
cat = cv2.imread("mao.jpg", 1) # cat变量存储读取的图像数据,OpenCV默认以BGR格式读取
# 在名为'window'的窗口中显示图像
cv2.imshow('window', cat)
blur = cv2.blur(cat,(3,3)) #均值滤波
cv2.imshow('blur', blur)
box = cv2.boxFilter(cat,-1,(3,3),normalize=True) #方框滤波
cv2.imshow('box', box)
aussian = cv2.GaussianBlur(cat,(3,3),1) #高斯滤波
cv2.imshow('aussian', aussian)
# 等待按键事件,0表示无限期等待
key = cv2.waitKey(0)
# 检查按下的键是否是'q',如果是则销毁所有窗口
if key & 0xFF == ord('q'): # 0xFF是掩码,用于确保只检查最低8位
print("准备销毁窗口")
cv2.destroyAllWindows()
1.4 中值滤波
中值滤波是取中间元素作为值,不如3X3的范围有9个元素,每次取第五个元素
python
# 导入OpenCV库,用于图像处理
import cv2
# 从matplotlib库中导入pyplot模块,用于绘制图像
from matplotlib import pyplot as plt
# 创建一个名为'window'的窗口,窗口大小自动调整
cv2.namedWindow('window', cv2.WINDOW_AUTOSIZE) # cv2.WINDOW_AUTOSIZE: 窗口大小自动调整,不允许用户改变窗口大小
# 使用OpenCV的imread函数读取名为"mao.jpg"的图片,参数1表示读取彩色图像
cat = cv2.imread("mao.jpg", 1) # cat变量存储读取的图像数据,OpenCV默认以BGR格式读取
# 在名为'window'的窗口中显示图像
cv2.imshow('window', cat)
blur = cv2.blur(cat,(3,3)) #均值滤波
cv2.imshow('blur', blur)
box = cv2.boxFilter(cat,-1,(3,3),normalize=True) #方框滤波
cv2.imshow('box', box)
aussian = cv2.GaussianBlur(cat,(3,3),1) #高斯滤波
cv2.imshow('aussian', aussian)
median = cv2.medianBlur(cat,5) #中值滤波
cv2.imshow('median', aussian)
# 等待按键事件,0表示无限期等待
key = cv2.waitKey(0)
# 检查按下的键是否是'q',如果是则销毁所有窗口
if key & 0xFF == ord('q'): # 0xFF是掩码,用于确保只检查最低8位
print("准备销毁窗口")
cv2.destroyAllWindows()