当前位置: 首页 > article >正文

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


http://www.kler.cn/a/399707.html

相关文章:

  • 解决微信小程序自定义tabbar点击两次才能跳转
  • PyTorch使用教程-深度学习框架
  • 鸿蒙实现 web 传值
  • 大语言模型通用能力排行榜(2024年10月8日更新)
  • 关于 Oracle Database Express Edition 的功能和安装
  • 热点更新场景,OceanBase如何实现性能优化
  • MySQL的表的约束以及查询
  • 汽车资讯新动力:Spring Boot技术驱动
  • 统计从输入的两个整数a和b所确定的范围内(0 ~ 9)出现的次数(c基础)
  • SpringBoot源码解析(四):解析应用参数args
  • 马斯克诉OpenAI新进展:加入微软等被告
  • WPF的基础控件详解
  • 基于单片机的风能太阳能供电的路灯智能控制系统设计(论文+源码)
  • 2411rust,1.80
  • 【汇编语言】数据处理的两个基本问题(三) —— 汇编语言的艺术:从div,dd,dup到结构化数据的访问
  • 数据库灾难恢复:构建不可摧的数据防线
  • 【数据结构】栈和队列的定义与实现
  • Linux :进程间通信之管道
  • 详细解读Gson 、Jackson 、FastJson 三大json序列化工具
  • PyTorch实战-手写数字识别-单层感知机
  • uniapp 微信小程序地图标记点、聚合点/根据缩放重合点,根据缩放登记显示气泡marik标点
  • Docker 用法详解
  • k8s入门学习
  • 鸿蒙动画开发08——帧动画
  • MYSQL- 查看表的状态信息语句(二十四)
  • 【android USB 串口通信助手】stm32 源码demo 单片机与手机通信 Android studio 20241118