OpenCV中的高斯滤波(Gaussian Blur)是一种常用的图像平滑技术,通过高斯核卷积消除图像中的噪声。以下是详细说明和代码示例:
1. 高斯滤波原理
- 作用:抑制噪声(尤其是高斯噪声),同时保留图像边缘。
- 核心思想:像素值由邻域内像素的加权平均决定,权重服从二维高斯分布(中心点权重最大,远离中心逐渐减小)。
2. OpenCV函数原型
void GaussianBlur(
InputArray src, // 输入图像
OutputArray dst, // 输出图像
Size ksize, // 高斯核大小(宽高为奇数,如3x3、5x5)
double sigmaX, // X方向标准差
double sigmaY = 0, // Y方向标准差(默认=sigmaX)
int borderType = BORDER_DEFAULT // 边界处理方式
);
3. C++代码示例
#include <opencv2/opencv.hpp>
using namespace cv;
int main() {
Mat src = imread("input.jpg", IMREAD_COLOR); // 读取图像
if (src.empty()) {
std::cerr << "Error: Image not found!" << std::endl;
return -1;
}
Mat dst;
GaussianBlur(src, dst, Size(5, 5), 1.5); // 5x5核,sigma=1.5
imshow("Original", src);
imshow("Gaussian Blur", dst);
waitKey(0);
return 0;
}
4. 关键参数说明
- ksize:核尺寸越大,模糊效果越强(但计算量增加)。
- sigma:
sigmaX/Y越大,周围像素影响范围越广。- 若设为0,OpenCV会根据
ksize自动计算sigma。
5. Python等效代码
import cv2
img = cv2.imread("input.jpg")
blurred = cv2.GaussianBlur(img, (5, 5), sigmaX=1.5)
cv2.imshow("Result", blurred)
cv2.waitKey(0)
6. 应用场景
- 预处理:在边缘检测(如Canny)前降噪。
- 美化:皮肤柔化、背景虚化等。
- 去噪:消除传感器噪声或光照不均。
注意事项
- 性能:大核(如15x15)会影响实时性,需权衡效果与速度。
- 边缘处理:建议使用
BORDER_REFLECT或BORDER_CONSTANT避免边界伪影。
如果需要进一步优化或特定场景的用法,可以告诉我具体需求!
内容由零声教学AI助手提供,问题来源于学员提问




