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()
复制代码

 结果展示

 

posted @   tuyin  阅读(54)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示