opencv(c++)---访问图像像素、增加白噪点
opencv(c++)—访问图像像素、增加白噪点
// 头文件保护
#pragma once
// 引入OpenCV库和其他必要的头文件
#include <opencv2/opencv.hpp>
#include <iostream>
#include <random>
using namespace cv; // 使用OpenCV命名空间
using namespace std; // 使用标准命名空间
// 函数: 添加椒盐噪声
// 参数:
// - Mat img: 输入图像
// - int n: 要添加的噪声点数量
void Salt(Mat img, int n)
{
// 创建随机数生成器
default_random_engine e; // 默认随机数生成器
uniform_int_distribution<int> randomrows(0, img.rows - 1); // 随机生成行索引
uniform_int_distribution<int> randomcols(0, img.cols - 1); // 随机生成列索引
int i, j;
// 循环添加n个椒盐噪声点
for (int k = 0; k < n; k++)
{
// 生成随机的行和列索引
i = randomrows(e);
j = randomcols(e);
// 判断图像的通道数
if(img.channels() == 1) // 灰度图像
{
img.at<uchar>(i, j) = 255; // 将随机位置的像素值设置为255(白色)
}
else if (img.channels() == 3) // BGR彩色图像
{
img.at<Vec3b>(i, j)[0] = 255; // 蓝色通道设置为255
img.at<Vec3b>(i, j)[1] = 255; // 绿色通道设置为255
img.at<Vec3b>(i, j)[2] = 255; // 红色通道设置为255
}
}
}
// 主函数
int main()
{
// 读取图像
Mat src = imread("D:/123.jpg");
// 检查图像是否成功读取
if (src.empty())
{
cout << "读取图像失败" << endl; // 输出错误信息
return -1; // 返回 -1 表示失败
}
// 显示原始图像
imshow("原始图", src);
// 调用Salt函数添加2000个椒盐噪声点
Salt(src, 2000);
// 显示添加噪声后的图像
imshow("椒盐噪声图", src);
// 等待按键
waitKey(0);
return 0; // 返回 0 表示成功
}
函数解释
Salt(Mat img, int n)
该函数用于向输入图像添加椒盐噪声。椒盐噪声是常见的噪声类型,表现为随机出现的白色或黑色像素点。参数img
是输入的图像,参数n
指定要添加的噪声点的数量。函数通过随机生成像素位置,设置这些位置的颜色值为白色(255),实现椒盐噪声的效果。