用c++ opencv给图像加椒盐噪声
时间: 2023-09-21 19:03:12 浏览: 180
saltandpepper.rar_multiplicative_乘性噪声_加椒盐噪声_图像 椒盐_图像乘性噪声
以下是用C++和OpenCV给图像添加椒盐噪声的示例代码:
```
#include <opencv2/opencv.hpp>
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("lena.jpg"); // 读取图像
if (image.empty())
{
cout << "Could not open image" << endl;
return -1;
}
srand((unsigned)time(NULL)); // 设置随机数生成器种子
int rows = image.rows;
int cols = image.cols;
int channels = image.channels();
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < cols; j++)
{
if (rand() % 100 < 5) // 5%的概率加入椒盐噪声
{
if (rand() % 2 == 0) // 50%的概率变成黑色
{
image.at<Vec3b>(i, j)[0] = 0;
image.at<Vec3b>(i, j)[1] = 0;
image.at<Vec3b>(i, j)[2] = 0;
}
else // 50%的概率变成白色
{
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 255;
image.at<Vec3b>(i, j)[2] = 255;
}
}
}
}
namedWindow("image", WINDOW_NORMAL); // 创建窗口
imshow("image", image); // 显示图像
waitKey(0); // 等待按键
return 0;
}
```
代码中,我们使用了一个双重循环遍历图像的每个像素,通过生成随机数来决定是否将该像素变成椒盐噪声。在每个随机生成的椒盐噪声像素中,有50%的概率变成黑色,有50%的概率变成白色。
最后,我们将添加了椒盐噪声的图像显示在一个窗口中,并等待用户按下任意键来关闭窗口。
阅读全文