- OpenCV Python 教程
- OpenCV Python - 首页
- OpenCV Python - 概述
- OpenCV Python - 环境配置
- OpenCV Python - 读取图像
- OpenCV Python - 写入图像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 图像属性
- OpenCV Python - 位运算
- OpenCV Python - 形状和文字
- OpenCV Python - 鼠标事件
- OpenCV Python - 添加轨迹条
- OpenCV Python - 缩放和旋转
- OpenCV Python - 图像阈值
- OpenCV Python - 图像滤波
- OpenCV Python - 边缘检测
- OpenCV Python - 直方图
- OpenCV Python - 颜色空间
- OpenCV Python - 图像变换
- OpenCV Python - 图像轮廓
- OpenCV Python - 模板匹配
- OpenCV Python - 图像金字塔
- OpenCV Python - 图像加法
- OpenCV Python - 图像混合
- OpenCV Python - 傅里叶变换
- OpenCV Python - 捕捉视频
- OpenCV Python - 播放视频
- OpenCV Python - 从视频中提取图像
- OpenCV Python - 从图像生成视频
- OpenCV Python - 人脸检测
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特征检测
- OpenCV Python - 特征匹配
- OpenCV Python - 数字识别
- OpenCV Python 资源
- OpenCV Python - 快速指南
- OpenCV Python - 资源
- OpenCV Python - 讨论
OpenCV Python - 图像滤波
图像基本上是由0到255之间的二进制值表示的像素矩阵,这些值对应于灰度值。彩色图像是具有对应于RGB通道数量的三维矩阵。
图像滤波是一个对像素值进行平均以改变原始图像的阴影、亮度、对比度等的過程。
通过应用低通滤波器,我们可以去除图像中的任何噪声。高通滤波器有助于检测边缘。
OpenCV库提供`cv2.filter2D()`函数。它使用大小为3x3或5x5等的方形矩阵内核对原始图像进行卷积。
卷积将内核矩阵水平和垂直地滑过图像矩阵。对于每个位置,将内核下的所有像素相加,取内核下像素的平均值,并用平均值替换中心像素。
对所有像素执行此操作以获得输出图像像素矩阵。请参考下图:
`cv2.filter2D()`函数需要输入数组、内核矩阵和输出数组参数。
示例
下图使用此函数通过二维卷积获得平均图像。相应的程序如下:
import numpy as np import cv2 as cv from matplotlib import pyplot as plt img = cv.imread('opencv_logo_gs.png') kernel = np.ones((3,3),np.float32)/9 dst = cv.filter2D(img,-1,kernel) plt.subplot(121),plt.imshow(img),plt.title('Original') plt.xticks([]), plt.yticks([]) plt.subplot(122),plt.imshow(dst),plt.title('Convolved') plt.xticks([]), plt.yticks([]) plt.show()
输出
滤波函数类型
OpenCV中的其他滤波函数包括:
双边滤波器 (BilateralFilter) - 减少不需要的噪声,同时保持边缘完整。
方框滤波器 (BoxFilter) - 这是一种平均模糊操作。
高斯模糊 (GaussianBlur) - 消除高频内容,例如噪声和边缘。
中值滤波器 (MedianBlur) - 它不取平均值,而是取内核下所有像素的中值,并替换中心值。
广告