opencv c++怎么生成并添加高斯噪声
时间: 2023-08-09 13:05:21 浏览: 524
要在OpenCV中生成并添加高斯噪声,可以使用以下步骤:
1. 读取图像:使用`imread()`函数读取要添加噪声的图像。
2. 创建噪声图像:创建一个与原始图像大小相同的噪声图像,可以使用`Mat`类的构造函数来创建一个空的图像。
3. 生成高斯噪声:使用`randn()`函数生成均值为0,标准差为`sigma`的高斯噪声。可以通过乘以标准差并加上均值来获得所需的高斯噪声。
```c++
Mat noise = Mat(image.size(), image.type());
randn(noise, Scalar(0), Scalar(sigma));
```
4. 添加噪声:将生成的高斯噪声添加到原始图像中,可以使用`add()`函数将噪声添加到原始图像中。
```c++
Mat noisy_image;
add(image, noise, noisy_image);
```
5. 显示结果:使用`imshow()`函数显示添加了噪声的图像,使用`waitKey()`函数等待用户按下键盘上的任意键。
```c++
imshow("Original Image", image);
imshow("Noisy Image", noisy_image);
waitKey(0);
```
完整的示例代码如下:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image = imread("lena.jpg", IMREAD_GRAYSCALE);
double sigma = 20;
Mat noise = Mat(image.size(), image.type());
randn(noise, Scalar(0), Scalar(sigma));
Mat noisy_image;
add(image, noise, noisy_image);
imshow("Original Image", image);
imshow("Noisy Image", noisy_image);
waitKey(0);
return 0;
}
```
在上面的示例中,我们生成了一个标准差为20的高斯噪声,并将其添加到原始图像中,最后将添加了噪声的图像显示在屏幕上。
阅读全文