常用图像滤波及色彩调节操作(Opencv)

1. 常用滤波/模糊操作

py 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plot

img = cv2.imread("tmp.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
img_g = cv2.GaussianBlur(img, (7,7), 0)
img_mb = cv2.medianBlur(img, ksize=7) #中指滤波
img_bm = cv2.blur(img, ksize=(7,7)) #均值滤波
img_bf = cv2.boxFilter(img, ddepth=-1, ksize=(7,7)) #方框滤波
img_bfr = cv2.bilateralFilter(img, 7, 100, 100) #双边滤波
self_kernel = np.array([[0,-1,0],[-1,7,-1],[0,-1,0]]) #自定义锐化核
img_f = cv2.filter2D(img, ddepth=-1, kernel=self_kernel)
img_eh = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
img_eh = cv2.equalizeHist(img_eh)

plot.figure(figsize=(12,8));
plot.subplot(2,4,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(2,4,2)
plot.title('Gaussian Blur')
plot.imshow(img_g)
plot.subplot(2,4,3)
plot.title('Mean blur')
plot.imshow(img_bm)
plot.subplot(2,4,4)
plot.title('Median Blur')
plot.imshow(img_mb)
plot.subplot(2,4,5)
plot.title('box filter')
plot.imshow(img_bf)
plot.subplot(2,4,6)
plot.title('bilateral Filter')
plot.imshow(img_bfr)
plot.subplot(2,4,7)
plot.title('self filter')
plot.imshow(img_f)
plot.subplot(2,4,8)
plot.title('equalize Hist')
plot.imshow(img_eh)

plot.show()

2. 常用色彩调节操作

py 复制代码
import cv2
import numpy as np
import matplotlib.pyplot as plot

img = cv2.imread("tmp.jpg")
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
noise = np.random.randint(0, 50, img.shape[:3], dtype=np.uint8) #增加随机噪声
img_ni = cv2.add(img, noise)
img_bi = cv2.add(img, np.array([50])) #增加亮度
img_hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
(h,s,v) = cv2.split(img_hsv)
s1 = np.clip(s+50, 0, 255) #增加饱和度
img_si = cv2.merge([h,s1,v])
img_si = cv2.cvtColor(img_si, cv2.COLOR_HSV2RGB)
v1 = np.clip(v+50, 0, 255) #增加亮度
img_sb = cv2.merge([h,s,v1])
img_sb = cv2.cvtColor(img_sb, cv2.COLOR_HSV2RGB)

plot.figure(figsize=(15,3));
plot.subplot(1,5,1)
plot.title('source image')
plot.imshow(img)
plot.subplot(1,5,2)
plot.title('add noise')
plot.imshow(img_ni)
plot.subplot(1,5,3)
plot.title('RGB add bright')
plot.imshow(img_bi)
plot.subplot(1,5,4)
plot.title('add saturation')
plot.imshow(img_si)
plot.subplot(1,5,5)
plot.title('HSV add bright')
plot.imshow(img_sb)

plot.show()

3. 滤波函数说明

函数名 作用描述 典型应用场景 核心特点
cv2.blur() 均值滤波(归一化方框滤波) 快速简单去噪、均匀模糊 ✅ 计算快 ❌ 边缘模糊明显
cv2.boxFilter() 方框滤波(可非归一化) 自定义权重模糊、非归一化计算 ✅ 支持非归一化(可能溢出) ❌ 需手动控制
cv2.GaussianBlur() 高斯滤波(正态分布权重) 消除高斯噪声、自然平滑 ✅ 保留边缘较好 ❌ 计算量较大
cv2.medianBlur() 中值滤波(取像素中位数) 去除椒盐噪声、脉冲噪声 ✅ 保护边缘 ❌ 仅支持奇数核大小
cv2.bilateralFilter() 双边滤波(空间+颜色权重) 保边去噪、美颜处理 ✅ 保留细节 ❌ 计算复杂度极高
cv2.filter2D() 自定义卷积核滤波 特殊滤波效果(锐化、边缘检测等) ✅ 高度灵活 ❌ 需手动设计卷积核

系列文章:

  1. opencv常用边缘检测算子示例
  2. 图像颜色空间对比(Opencv)
  3. 图像变换方式区别对比(Opencv)
  4. 常用图像滤波及色彩调节操作(Opencv)
  5. 图像形态学操作对比(Opencv)
相关推荐
彭祥.4 小时前
Jetson边缘计算主板:Ubuntu 环境配置 CUDA 与 cudNN 推理环境 + OpenCV 与 C++ 进行目标分类
c++·opencv·分类
超龄超能程序猿5 小时前
(三)PS识别:基于噪声分析PS识别的技术实现
图像处理·人工智能·计算机视觉
Tony沈哲5 小时前
macOS 上为 Compose Desktop 构建跨架构图像处理 dylib:OpenCV + libraw + libheif 实践指南
opencv·算法
Chef_Chen7 小时前
从0开始学习计算机视觉--Day07--神经网络
神经网络·学习·计算机视觉
加油吧zkf9 小时前
YOLO目标检测数据集类别:分类与应用
人工智能·计算机视觉·目标跟踪
加油吧zkf10 小时前
水下目标检测:突破与创新
人工智能·计算机视觉·目标跟踪
静心问道11 小时前
GoT:超越思维链:语言模型中的有效思维图推理
人工智能·计算机视觉·语言模型
晓131313 小时前
第七章 OpenCV篇——角点检测与特征检测
人工智能·深度学习·计算机视觉
视觉人机器视觉15 小时前
Visual Studio2022和C++opencv的配置保姆级教程
c++·opencv·visual studio
PyAIExplorer15 小时前
图像旋转:从原理到 OpenCV 实践
人工智能·opencv·计算机视觉