想给图片加上点噪音,网上一查都是椒盐噪音,自己做了一个稍微了一点的复杂的噪音
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv\cv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
#include <fstream>
#define random(a,b) (rand()%(b-a)+a)
using namespace cv;
using namespace std;
void salt(Mat image, int n)
{
int i, j;
for (int k = 0; k < n; k++)
{
int r = rand() % 29;
// rand()是随机数生成器
if (r == 1)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 2)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i, j + 1)[0] = 255;
image.at<Vec3b>(i, j + 1)[1] = 228;
image.at<Vec3b>(i, j + 1)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 3)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i, j - 1)[0] = 255;
image.at<Vec3b>(i, j - 1)[1] = 228;
image.at<Vec3b>(i, j - 1)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 4)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i + 1, j)[0] = 255;
image.at<Vec3b>(i + 1, j)[1] = 228;
image.at<Vec3b>(i + 1, j)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 5)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i - 1, j)[0] = 255;
image.at<Vec3b>(i - 1, j)[1] = 228;
image.at<Vec3b>(i - 1, j)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 6)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i + 1, j)[0] = 255;
image.at<Vec3b>(i + 1, j)[1] = 228;
image.at<Vec3b>(i + 1, j)[2] = 181;
image.at<Vec3b>(i, j + 1)[0] = 255;
image.at<Vec3b>(i, j + 1)[1] = 228;
image.at<Vec3b>(i, j + 1)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 7)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i - 1, j)[0] = 255;
image.at<Vec3b>(i - 1, j)[1] = 228;
image.at<Vec3b>(i - 1, j)[2] = 181;
image.at<Vec3b>(i, j + 1)[0] = 255;
image.at<Vec3b>(i, j + 1)[1] = 228;
image.at<Vec3b>(i, j + 1)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 8)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i - 1, j)[0] = 255;
image.at<Vec3b>(i - 1, j)[1] = 228;
image.at<Vec3b>(i - 1, j)[2] = 181;
image.at<Vec3b>(i, j - 1)[0] = 255;
image.at<Vec3b>(i, j - 1)[1] = 228;
image.at<Vec3b>(i, j - 1)[2] = 181;
image.at<Vec3b>(i, j)[0] = 255;
image.at<Vec3b>(i, j)[1] = 228;
image.at<Vec3b>(i, j)[2] = 181;
}
if (r == 9)
{
i = random(5, 250);//行
j = random(5, 250);//列
image.at<Vec3b>(i + 1, j)[0] = 255;
image.at<Vec3b>(i + 1, j)[1] = 228;
image.at<Vec3b>