c++版opencv如何对图像进行高斯滤波?给出例程
时间: 2023-08-10 11:09:40 浏览: 57
C++版OpenCV对图像进行高斯滤波可以使用函数cv::GaussianBlur()。
以下是一个对图像进行高斯滤波的例程:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取图片
Mat src = imread("test.jpg");
// 判断图片是否读取成功
if (src.empty())
{
cout << "图片读取失败!" << endl;
return -1;
}
// 高斯滤波
Mat dst;
GaussianBlur(src, dst, Size(3, 3), 0, 0);
// 显示原图和处理后的图像
imshow("原图", src);
imshow("高斯滤波后的图像", dst);
waitKey();
return 0;
}
```
在这个例程中,我们使用了cv::GaussianBlur()函数对读取的图片进行了高斯滤波,并将处理后的图像显示出来。其中,Size(3, 3)表示高斯核的大小,0表示在x和y方向上的标准差,也可以自己指定。
相关问题
opencv中如何对图像进行高斯滤波
在 OpenCV 中,可以使用 `cv2.GaussianBlur()` 函数对图像进行高斯滤波。该函数具有以下语法:
```python
cv2.GaussianBlur(src, ksize, sigmaX[, dst[, sigmaY[, borderType]]]) → dst
```
其中,参数含义如下:
- `src`:输入图像,可以是单通道或多通道图像,数据类型为 `uint8`、`float32` 或 `float64`。
- `ksize`:高斯核的大小,通常为正奇数。如果 `ksize` 为 (w,h),则表示高斯核的大小为 w x h。
- `sigmaX`:高斯核在 X 方向上的标准差。
- `dst`:输出图像,与输入图像大小和通道数相同,数据类型为与输入图像相同。
- `sigmaY`:高斯核在 Y 方向上的标准差,如果未指定则默认与 `sigmaX` 相同。
- `borderType`:像素填充方式,默认为 `cv2.BORDER_DEFAULT`。
以下是一个简单的例子,展示了如何使用 `cv2.GaussianBlur()` 对图像进行高斯滤波:
```python
import cv2
# 读取图像
img = cv2.imread('image.jpg')
# 对图像进行高斯滤波
img_blur = cv2.GaussianBlur(img, (5, 5), 0)
# 显示原始图像和滤波后的图像
cv2.imshow('Original Image', img)
cv2.imshow('Blurred Image', img_blur)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
在上面的代码中,我们使用 `cv2.imread()` 函数读取了一张图像,然后使用 `cv2.GaussianBlur()` 函数对其进行高斯滤波,得到了一个模糊的图像。最后,我们使用 `cv2.imshow()` 函数显示了原始图像和滤波后的图像。
对图像进行高斯滤波处理,opencv中有代码实现吗
是的,OpenCV提供了高斯滤波函数`cv::GaussianBlur()`来实现图像的高斯滤波处理。以下是使用OpenCV进行高斯滤波处理的示例代码:
```cpp
cv::Mat src_img = cv::imread("image.jpg"); // 读取图像
cv::Mat dst_img;
cv::GaussianBlur(src_img, dst_img, cv::Size(5, 5), 0, 0); // 进行高斯滤波
cv::imshow("src image", src_img); // 显示原图像
cv::imshow("dst image", dst_img); // 显示处理后的图像
cv::waitKey(0); // 等待按键
```
在上述代码中,`cv::imread()`函数用于读取图像文件,`cv::GaussianBlur()`函数用于进行高斯滤波处理,`cv::imshow()`函数用于显示图像,`cv::waitKey()`函数用于等待按键。需要注意的是,`cv::GaussianBlur()`函数中的参数`cv::Size(5, 5)`表示高斯核的大小,参数`0`表示在x和y方向上的标准差,如果为0,则根据核大小自动计算标准差。