opencv(c++)---访问图像像素、增加白噪点

opencv(c++)---访问图像像素、增加白噪点

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),实现椒盐噪声的效果。

相关推荐
云简业财.AI几秒前
业财活动 | 用真实业务场景来孵化业财AI产品的AI业财黑客松
人工智能·数字化转型·业财融合·云简业财·ai黑客松
MindUp9 分钟前
面试录音视频的AI复盘方案:从语音转录到RAG问答的技术实践
人工智能·面试·音视频
向上的车轮25 分钟前
AI Infra 是什么?AI Infra的发展趋势是怎样的?
人工智能
liangshanbo121528 分钟前
Express SSE 流式输出实战:从入门 Demo 到 AI 生产级架构
人工智能·架构·express
安全指北针32 分钟前
AI Agent自主入侵真实系统:OpenAI和Anthropic两大模型接连“失控“,给安全行业敲响了什么警钟?
人工智能·安全
2601_9657996834 分钟前
2026 在线笔试平台深度测评与选型指南:从功能、稳定性、AI能力、防作弊全面分析
人工智能·笔记·功能测试
2601_9494999441 分钟前
芯瑞科技 DT-1414 光模块工程实测:完美兼容博通(安华高) HFBR-1414PTZ,VCSEL 替代方案
大数据·网络·人工智能·科技·光模块
城事漫游Molly42 分钟前
研究论证的四要素:主张、理由、证据、保证——用AI逐一检验
人工智能·ai for science·论文发表·博士生必读·论证argument·科研论文投稿
吹什么轩1 小时前
c++复习:map和set的使用
开发语言·c++
字节跳动视频云技术团队1 小时前
AI 视频降本的三种做法,只有一种不牺牲画质
人工智能·aigc