- 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 - 图像Pyramid
- OpenCV Python - 图像相加
- OpenCV Python - 图像混合
- OpenCV Python - 傅里叶变换
- OpenCV Python - 捕获视频
- OpenCV Python - 播放视频
- OpenCV Python - 视频图像
- OpenCV Python - 来自图像的视频
- OpenCV Python - 人脸检测
- OpenCV Python - Meanshift/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 中其他类型的过滤功能包括 -
BioralFilter - 减少不需要的噪音,保持边缘完整。
BoxFilter - 这是一个平均模糊操作。
GaussianBlur - 消除高频内容,例如噪声和边缘。
MedianBlur - 它不是平均值,而是取内核下所有像素的中值并替换中心值。