基于c++的高斯滤波算法
时间: 2023-08-19 20:05:16 浏览: 43
以下是一个基于 C++ 的高斯滤波算法示例代码:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
// 读取图像
cv::Mat image = cv::imread("input.jpg", cv::IMREAD_GRAYSCALE);
// 高斯滤波参数设置
int kernel_size = 5; // 高斯核大小
double sigma = 1.0; // 高斯核标准差
// 应用高斯滤波
cv::Mat filtered_image;
cv::GaussianBlur(image, filtered_image, cv::Size(kernel_size, kernel_size), sigma);
// 显示滤波前后的结果
cv::imshow("Original Image", image);
cv::imshow("Filtered Image", filtered_image);
cv::waitKey(0);
return 0;
}
```
这段代码使用了 OpenCV 库来进行高斯滤波。首先,通过 `cv::imread` 函数读取了一张灰度图像,并保存在 `image` 变量中。
然后,设置了高斯滤波的参数,包括高斯核大小 `kernel_size` 和标准差 `sigma`。这里的 `kernel_size` 决定了高斯核的大小,一般为奇数,表示核的宽度和高度相等。`sigma` 是高斯核的标准差,决定了高斯函数的形状。
接下来,通过调用 `cv::GaussianBlur` 函数对图像进行高斯滤波处理。该函数接受输入图像、输出图像和高斯核的大小、标准差作为参数。执行完这一步后,滤波后的结果保存在 `filtered_image` 变量中。
最后,通过 `cv::imshow` 函数显示滤波前后的结果。`cv::waitKey(0)` 用于等待用户按下键盘上的任意键,以保持图像窗口显示。
需要注意的是,上述代码中使用了 OpenCV 库,如果未安装该库,需要先进行安装,并在编译时链接相应的库文件。另外,代码中假设输入图像为灰度图像,如果需要处理彩色图像,可以将 `cv::IMREAD_GRAYSCALE` 改为 `cv::IMREAD_COLOR`。