椒鹽噪聲點均選擇4000個。
#include <opencv2\opencv.hpp>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <iostream>
//using namespace std;
using namespace cv;
void salt(Mat &img, int n);
void pepper(Mat &img, int n);
//本程序是一個添加椒鹽噪聲的程序
int main()
{
Mat zImg = imread("D:/fodder/2.jpg");//注意文件夾啊,要寫兩槓;或者將斜槓換一個方向
//Mat zSP;
if(zImg.data)
{
salt(zImg, 4000);
pepper(zImg, 4000);
namedWindow("Salt&&Pepper Window");
imshow("Salt&&Pepper Window", zImg);
imwrite("添加椒鹽噪聲的圖像.jpg",zImg);
waitKey(0);
destroyAllWindows();
}
else
std::cout << "Open Image Error!" << std::endl;
return 0;
}
void salt(Mat &img, int n)
{
for(int k=0; k<n; k++)
{
int i = rand()%img.cols;
int j = rand()%img.rows;
if(img.channels() == 1)
{
img.at<uchar>(j,i) = 255;
}
else if(img.channels() == 3)
{
img.at<cv::Vec3b>(j,i)[0] = 255;
img.at<cv::Vec3b>(j,i)[1] = 255;
img.at<cv::Vec3b>(j,i)[2] = 255;
}
}
}
void pepper(Mat &img, int n)
{
for(int k=0; k<n; k++)
{
int i = rand()%img.cols;
int j = rand()%img.rows;
if(img.channels() == 1)
{
img.at<uchar>(j,i) = 0;
}
else if(img.channels() == 3)
{
img.at<cv::Vec3b>(j,i)[0] = 0;
img.at<cv::Vec3b>(j,i)[1] = 0;
img.at<cv::Vec3b>(j,i)[2] = 0;
}
}
}