想给图片加上点噪音,网上一查都是椒盐噪音,自己做了一个稍微了一点的复杂的噪音
#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]

这篇博客介绍了如何使用C++和OpenCV库为图片生成具有变化形态的椒盐噪声,并对部分噪声应用高斯模糊效果。作者提供了一个独特的方法来增强图像噪声处理的多样性。
最低0.47元/天 解锁文章
1310

被折叠的 条评论
为什么被折叠?



