opencv學習(2)添加椒鹽噪聲

椒鹽噪聲點均選擇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;
		}
	}
}



 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章