10_图像平滑处理
# 图像平滑处理d # 1. 均值滤波 import cv2 #opencv的缩写为cv2 import matplotlib.pyplot as plt # matplotlib库用于绘图展示 import numpy as np # numpy数值计算工具包 # 魔法指令,直接展示图,Jupyter notebook特有 # %matplotlib inline img = cv2.imread('D:/pycharm/pycharm-cope/opencv/resource/photo/04_LenaNoise.png') cv2.imshow('img',img) cv2.waitKey(0) cv2.destroyAllWindows() # 均值滤波 # 简单的平均卷积操作,方框中的值相加,取平均,替换掉中心204的值 blur = cv2.blur(img,(3,3)) # (3,3) 为核的大小,通常情况核都是奇数 3、5、7 cv2.imshow('blur',blur) cv2.waitKey(0) cv2.destroyAllWindows() # 2. 方框滤波 # 方框滤波 # 基本和均值一样,可以选择归一化 # 在 Python 中 -1 表示自适应填充对应的值,这里的 -1 表示与颜色通道数自适应一样 box = cv2.boxFilter(img, -1, (3, 3), normalize=True) # 方框滤波如果做归一化,得到的结果和均值滤波一模一样 cv2.imshow('box', box) cv2.waitKey(0) cv2.destroyAllWindows() # 方框滤波 # 基本和均值一样,可以选择归一化,容易越界 box = cv2.boxFilter(img, -1, (3, 3), normalize=False) # 越界的值取 255 cv2.imshow('box', box) cv2.waitKey(0) cv2.destroyAllWindows() # 3. 高斯滤波 # 高斯函数,越接近均值时,它的概率越大。 # 离中心值越近的,它的权重越大,离中心值越远的,它的权重越小。 aussian = cv2.GaussianBlur(img, (5, 5), 1) cv2.imshow('aussian', aussian) cv2.waitKey(0) cv2.destroyAllWindows() # 4. 中值滤波 # 中值滤波 # 排序后拿中值替代中间元素值的大小 median = cv2.medianBlur(img, 5) cv2.imshow('median', median) cv2.waitKey(0) cv2.destroyAllWindows() # 5. 展示所有滤波 # 展示所有的 res = np.hstack((blur, aussian, median)) # 矩阵横着拼接 #res = np.vstack((blur,aussian,median)) # 矩阵竖着拼接 print(res) cv2.imshow('median vs average', res) cv2.waitKey(0) cv2.destroyAllWindows()
结果展示
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)