首页 > 其他分享 >OpenCV(cv::RNG、cv::theRNG())

OpenCV(cv::RNG、cv::theRNG())

时间:2024-08-23 13:15:40浏览次数:12  
标签:RNG 生成器 theRNG 生成 OpenCV 随机数 cv

目录



在 OpenCV 中,cv::RNGcv::theRNG() 是用于随机数生成的工具,常用于图像处理、计算机视觉中的数据生成、扰动操作等。

1. cv::RNG

cv::RNG 是一个用于生成随机数的类(Random Number Generator)。它封装了随机数生成的常见操作,支持各种不同的分布形式(均匀分布、正态分布等)。

1.1 构造函数

cv::RNG::RNG(uint64 seed = 0);
  • seed: 随机数生成器的种子值。使用相同的种子值可以保证生成的随机数序列一致。默认种子值为 0,这意味着随机数生成器将自动生成一个种子。

1.2 常用方法

  • int operator()(): 生成一个随机整数。
  • double uniform(double a, double b): 生成在范围 [a, b) 内的均匀分布随机数。
  • float uniform(float a, float b): 生成在范围 [a, b) 内的均匀分布随机数(浮点数)。
  • int uniform(int a, int b): 生成在范围 [a, b) 内的均匀分布随机数(整数)。
  • double gaussian(double sigma): 生成以 0 为均值,sigma 为标准差的正态分布随机数。

1.3 示例

cv::RNG rng; // 创建一个随机数生成器对象
int rand_int = rng(); // 生成一个随机整数
double rand_uniform = rng.uniform(0.0, 1.0); // 生成一个 [0, 1) 内的均匀分布随机数
double rand_gaussian = rng.gaussian(1.0); // 生成一个标准差为 1 的正态分布随机数


2. cv::theRNG()

cv::theRNG() 是一个全局函数,返回 OpenCV 库内置的全局随机数生成器。这个函数提供了一个单例模式的 RNG 对象,便于用户在整个程序中使用一致的随机数生成器。

2.1 使用方式

cv::RNG& rng = cv::theRNG(); // 获取全局随机数生成器
int rand_int = rng(); // 生成一个随机整数
double rand_uniform = rng.uniform(0.0, 1.0); // 生成一个 [0, 1) 内的均匀分布随机数

cv::theRNG() 返回一个 cv::RNG 类型的引用,之后你可以使用 cv::RNG 类的所有方法进行随机数的生成。它提供了一个方便的方法来确保整个应用程序中的随机数生成具有一致性。

2.2 全局随机数生成器的优点

使用 cv::theRNG() 提供的全局随机数生成器有以下优点:

  • 一致性:在应用程序的不同部分使用相同的随机数生成器,有助于确保生成的随机数序列在不同操作之间一致。
  • 简洁性:避免创建多个 cv::RNG 实例,使代码更加简洁。
  • 控制种子:你可以通过 cv::theRNG().state = seed; 来设置全局种子,以控制随机数的生成。

2.3 示例

cv::RNG& rng = cv::theRNG(); // 使用全局随机数生成器
rng.state = 12345; // 设置随机种子
int rand_int = rng(); // 生成随机整数
double rand_uniform = rng.uniform(0.0, 1.0); // 生成均匀分布的随机数

3. 总结

  • cv::RNG 是 OpenCV 中的随机数生成类,允许生成均匀分布、正态分布等随机数。
  • cv::theRNG() 是一个全局函数,用于访问全局随机数生成器,便于在整个应用中使用一致的随机数生成逻辑。


标签:RNG,生成器,theRNG,生成,OpenCV,随机数,cv
From: https://www.cnblogs.com/keye/p/18375788

相关文章

  • qt5.14.2 MSVC opencv(不结合vs)路径添加问题 测试通过
     不换行写法1win32:CONFIG(release,debug|release):LIBS+=-LG:/opencv4.4.0/opencv4.4_vs_msvc19_qt6.5/x64/vc17/lib/-lopencv_aruco440-lopencv_bgsegm440-lopencv_bioinspired440-lopencv_calib3d440-lopencv_ccalib440-lopencv_core440-lopencv_cvv440-lopen......
  • Qt5.14.2 MinGW7.3.0_64 opencv helloworld
    路径配置.proINCLUDEPATH+=E:\Opencv\includeLIBS+=E:\Opencv\x64\mingw\lib\libopencv_*.a 点击按钮打开一张图片1#include"mainwindow.h"2#include"ui_mainwindow.h"3#include<QFileDialog>4#include<QMessageBox>5......
  • 安防监控/视频分析EasyCVR视频监控汇聚管理平台登录1分钟之后自动退出是什么原因?
    EasyCVR视频监控汇聚管理平台是一款针对大中型项目设计的跨区域网络化视频监控集中管理平台。该平台不仅具备视频资源管理、设备管理、用户管理、网络管理和安全管理等功能,还支持多种主流标准协议,如GB28181、RTSP/Onvif、RTMP、部标JT808、GA/T1400协议等,以及厂家的私有协议和SDK......
  • 安防视频监控EasyCVR视频汇聚平台出现代码层面报错“panic:runtime error”的原因排查
    安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台基于云边端一体化架构,兼容性强、支持多协议接入,包括国标GB/T28181协议、部标JT808、GA/T1400协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等。有用户反馈,启动EasyCVR......
  • 视频项目开发,EasyCVR视频融合平台为何成为关键驱动力
    智慧类视频项目是基于多个系统融合,旨在实现更广泛联动功能,以满足智能化应用需求为基石的信息化项目。当前,智慧社区、智慧园区、智慧工厂乃至智慧城市等应用场景的需求日益增长。这些智慧项目的整合进程中,视频融合能力扮演着不可或缺的角色。将多样化的视频环境与智慧项目的业务......
  • EasyCVR视频汇聚技术赋能智慧煤矿:车载设备接入方案助力实时监控与远程监管
    在煤矿行业,智慧化转型已成为提升生产效率、保障安全的重要途径。随着物联网、大数据、云计算等技术的快速发展,智慧煤矿建设逐步深入,车载设备作为煤矿生产的重要一环,其接入智慧管理系统显得尤为重要。本文将详细介绍智慧煤矿车载设备接入EasyCVR平台的方案,旨在通过此方案实现煤矿生......
  • OpenCV 机器人手眼标定
    OpenCV机器人手眼标定(九点标定法)对于初学者而言,对相机的标定经常模糊不清。不知道机器坐标与相机坐标如何转换,两个坐标系又是如何建立?我们通常是利用张氏标定法,针对于相机的畸变进行标定,利用校正得到的参数对图形进行处理后再呈现出来。这个方法网上用的人很多,资......
  • CVSS(Common Vulnerability Scoring System)打分规则解读
    CVSS(CommonVulnerabilityScoringSystem)提供了一种根据漏洞的主要特征进行打分,反映其严重性的方法。CVSS已成为被广泛使用的标准。下面是CVSS3.1版本计算器的界面截图,本文对BaseScore的打分标准做解读,并提供一些建议。同时会对每个维度选项做翻译。 AttackVector攻击向......
  • LabelImg、VoTT、Labelme、CVAT四个图像标注工具的优缺点
    LabelImg、VoTT、Labelme、CVAT是常用的图像标注工具,每个工具都有其独特的功能和适用场景。以下是对这几个工具的优缺点的详细分析:1.LabelImg优点:简单易用:LabelImg有着非常直观的用户界面,适合初学者和非技术用户。用户可以通过点击和拖拽轻松创建边界框。轻量级:工具轻量级,运......
  • RISC-V全志D1sCVBS套件文章汇总
    RISC-V全志D1sCVBS套件提示此开发板的任何问题都可以在我们的论坛交流讨论 https://forums.100ask.net/c/10-category/75-category/75文章目录汇总 文章共计4章,下面是章节汇总:第0章_RISC-V全志D1sCVBS套件第1章_快速启动第2章_安装并配置开发环境第3章_Tina-SDK开......