// opencv8_makesalt.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
//debug下在lib文件的名称后加d,release下不加d。
void salt(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 {
image.at<cv::Vec3b>(j, i)[0] = 255;
image.at<cv::Vec3b>(j, i)[1] = 255;
image.at<cv::Vec3b>(j, i)[2] = 255;
}
}
}
int main()
{
Mat src = imread("../res/lena.jpg"); //一个点代表省略当前文件夹路径,两个点则代表回到上一个文件夹路径
if (src.data == NULL)
{
std::cout << "image read is null" << std::endl;
return -10;
}
/*namedWindow("【原图】", WINDOW_AUTOSIZE);*/
imshow("【原图】", src);
Mat dst = src.clone();
salt(dst, 30000);
imshow("【椒盐噪声效果图】", dst);
waitKey(0);
return 0;
}
opencv模拟椒盐噪声
最新推荐文章于 2024-07-15 09:56:25 发布