c语言给图片添加椒盐噪声,图像添加高斯噪声、胡椒噪声、盐噪声和椒盐噪声...
时间: 2023-11-25 16:08:24 浏览: 149
为给图片添加椒盐噪声,可以按照以下步骤进行:
1. 首先,需要加载图片,并将其转换为灰度图像。
2. 然后,通过随机生成像素坐标的方式,为图像的一部分添加噪声。可以使用rand()函数生成随机数,并根据随机数的值来决定是将像素设置为黑色还是白色。
3. 最后,将添加噪声后的图像保存到文件中。
以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
int main(int argc, char** argv)
{
if (argc != 2)
{
printf("Usage: %s <image>\n", argv[0]);
return -1;
}
// 加载图像
IplImage* img = cvLoadImage(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
if (!img)
{
printf("Unable to load image %s\n", argv[1]);
return -1;
}
// 添加椒盐噪声
srand(time(NULL));
for (int i = 0; i < img->height * img->width / 10; i++)
{
int x = rand() % img->width;
int y = rand() % img->height;
int value = rand() % 2 == 0 ? 0 : 255;
CV_IMAGE_ELEM(img, uchar, y, x) = value;
}
// 保存图像
cvSaveImage("noisy_image.jpg", img);
// 释放图像
cvReleaseImage(&img);
return 0;
}
```
要给图像添加高斯噪声,可以使用OpenCV的GaussianBlur函数。以下是示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
int main(int argc, char** argv)
{
if (argc != 2)
{
printf("Usage: %s <image>\n", argv[0]);
return -1;
}
// 加载图像
IplImage* img = cvLoadImage(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
if (!img)
{
printf("Unable to load image %s\n", argv[1]);
return -1;
}
// 添加高斯噪声
cvSmooth(img, img, CV_GAUSSIAN, 5, 5, 0, 0);
// 保存图像
cvSaveImage("noisy_image.jpg", img);
// 释放图像
cvReleaseImage(&img);
return 0;
}
```
要给图像添加胡椒噪声,可以按照添加椒盐噪声的方式进行,只不过需要将像素设置为黑色的概率增加。
要给图像添加盐噪声,可以按照添加椒盐噪声的方式进行,只不过需要将像素设置为白色的概率增加。
阅读全文