opencv滤波操作

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()
相关推荐
Georgeviewer1 小时前
商业落地评测|实体门店GEO优化性价比与服务体系深度复盘
大数据·人工智能
GuWenyue1 小时前
分不清AI Workflow与Agent?3个实战案例彻底讲透,做AI应用不再踩选型坑
人工智能
彩讯股份3006342 小时前
彩讯股份与心洲科技签署战略合作协议,共建企业级模型后训练能力
人工智能·科技
迅易科技2 小时前
从场景验证到Agent上线:迅易 × WorkBuddy如何帮助企业建设AI能力?
人工智能·ai·腾讯云
PNP Robotics3 小时前
多伦多大学机器人峰会|物理AI与具身智能落地新趋势
人工智能·深度学习·机器学习·机器人
GIR1233 小时前
官方出品 | 多通道土壤呼吸测量系统市场现状与十五五规划深度报告:行业分析+趋势预测全收录
大数据·人工智能·机器学习
绿算技术3 小时前
绿算技术亮相第十八届HPC AI中国年会,擘画AI基础设施全栈协同新图景
人工智能
Litluecat3 小时前
2026年7月22日科技热点新闻
人工智能·科技·新闻·每日·速览
To_OC3 小时前
别再傻傻分不清:Workflow 和 Agent 到底不是一回事
人工智能·agent·workflow
触底反弹4 小时前
🔥 2026 大模型选择指南:别再只看 Benchmark 了,这些维度才是关键!
人工智能·面试