C++,opencv给图片加上形状多变的椒盐噪音,并且让部分椒盐噪音高斯模糊

这篇博客介绍了如何使用C++和OpenCV库为图片生成具有变化形态的椒盐噪声,并对部分噪声应用高斯模糊效果。作者提供了一个独特的方法来增强图像噪声处理的多样性。
摘要由CSDN通过智能技术生成

想给图片加上点噪音,网上一查都是椒盐噪音,自己做了一个稍微了一点的复杂的噪音

#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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值