#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <opencv2\core\core.hpp>
#include <cstdlib>
#include <iostream>
using namespace std;
using namespace cv;
//椒鹽噪點産生函數
void salt(cv::Mat &image,int n);
int main()
{
srand(cv::getTickCount());
cv::Mat image=cv::imread("D:\\Test\\opencv\\boldt.jpg");
if(!image.data)
return 0;
salt(image,3000);//調用椒鹽噪點函數
cv::namedWindow("output Image");
cv::imshow("output Image",image);
cv::imwrite("salted.bmp",image);
cv::waitKey(0);
return 0;
}
void salt(cv::Mat &image,int n)
{
for(int k=0;k<n;k++)
{
int i=rand()%image.cols;
int j=rand()%image.rows;
if(image.channels()==1){
image.at<uchar>(j,i)=255;
}
else if(image.channels()==3){
image.at<cv::Vec3b>(j,i)[0]=255;
image.at<cv::Vec3b>(j,i)[1]=255;
image.at<cv::Vec3b>(j,i)[2]=255;
}
}
}