//图像加椒盐噪声代码
#include <iostream>
#include <string.h>
#include "highgui.h"
#include <cstdlib>
using namespace std;
void salt(IplImage* image, int n,int width,int height)
{
for(int k=0; k<n; k++)
{
int i = rand()%width;
int j = rand()%height;
CvScalar s;
s=cvGet2D(image,j,i);
if(image->nChannels == 1)
{
s.val[0]=255;
//((uchar *)(image->imageData + i*image->widthStep))[j*image->nChannels + 0]=255;
}
else
{
s.val[0]=255;
s.val[1]=255;
s.val[2]=255;
//((uchar *)(image->imageData + i*image->widthStep))[j*image->nChannels + 0]=255; // B
//((uchar *)(image->imageData + i*image->widthStep))[j*image->nChannels + 1]=255; // G
//((uchar *)(image->imageData + i*image->widthStep))[j*image->nChannels + 2]=255; // R
}
cvSet2D(image,j,i,s);
}
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",image);
cvWaitKey(0);
cvReleaseImage(&image);
}
int main(){
IplImage* image = cvLoadImage("meinv.jpg",-1);
int width = image->width;
int height = image->height;
int all=width*height;
double c=0;
int m=0;
cout<<"please set the SNR of salt:";
cin>>c;
if(c<0&&c>1)
{
cout<<"error";
return 0;
}
else
{
salt(image,all*c,width,height);
}
}