Core_3_文件读取和随机数引擎

一XML/YAML文件

1,FileStorage类
1>构造函数

FileStorage::FileStorage(const string& source, int flags, 
                         const string& encoding=string())
//source为路径名,或者文件名(.xml/.yml文件)
//flags:
//FileStorage::READ  只读
//FileStorage::WRITE 只写,会覆盖
//FileStorage::APPEND用于追加信息 
//FileStorage::MEMORY从source读,写到内部缓冲区
exp:
FileStorage fs("abc.xml",FileStorage::WRITE);                      

2>FileStorage::open

bool FileStorage::open(const string& filename, int flags, 
                       const string& encoding=string())
//解释见构造函数
exp:
FileStorage fs;
fs.open("abc.yml",FileStorage::READ);

3>FileStorage::operator[]
返回指定元素的映射

FileNode FileStorage::operator[](const string& nodename) const
FileNode FileStorage::operator[](const char* nodename) const
//返回名字为nodename的FileNode

4>FileStorage::getDefaultObjectName
返回指定文件的归一化对象名称

static string FileStorage::getDefaultObjectName
                           (const string& filename)

2,文件的读写操作
1>文本和数字的输入输出

//输入name为it,值为100
fs<<"it"<<100;
//读取_1
int it;
fs["it"]>>it;
//读取_2
it=(int)fs["it"];

2>Opencv数据结构的输入和输出

Mat image//输入
fs<<"image"<<image;
//读取
fs["image"]>>image;

3>vector,array,map的写入和读取
写入:
vector要在元素之间加上[]

fs<<"strings"<<"["         //开始
  <<"Aa"<<"Bb"<<"Cc"<<"]"; //结束

map要在元素之间加上{}

fs<<"Map"<<"{"               //开始
  <<"One"<<1<<"Two"<<2<<"}"; //结束

读取:
利用FileNode和FileNodeIterator

FileNode n=fs["strings"];
//n对应vector<string>
FileNodeIterator it=n.begin(),end=n.end();
for(;it!=end;it++)
cout<<(string)*it<<endl;

二随机数引擎

RNG类
1>构造函数

//用2^32-1,初始化
RNG::RNG()
//用特定值初始化,state=0时使用默认值
RNG::RNG(uint64 state)

2>RNG::next
返回下一个随机数

unsigned int RNG::next()
//返回下一个32-bit随机数

3>RNG::operator T
返回下一个特定类型的随机数
比如:

//返回uchar类型,随机数
RNG::operator uchar()
//返回double类型,随机数
RNG::operator double()

4>RNG::uniform
返回按均匀分布的下一个随机数

//a,b为边界[a,b)
int RNG::uniform(int a, int b)
float RNG::uniform(float a, float b)
double RNG::uniform(double a, double b)

5>RNG::gaussian
返回按高斯分布的下一个随机数

double RNG::gaussian(double sigma)
//sigma,分布的标准偏差

6>theRNG
返回默认构造的随机数引擎

RNG& theRNG()

三系统的宏和函数
1>Round
返回浮点数最接近的整数

int cvRound(double value)

2>CV_Assert
检查是否为真,若false抛出异常

CV_Assert(expr None)

3>getTickCount
返回计时次数

int64 getTickCount()

4>getTickFrequency
返回每秒的计时次数

double getTickFrequency()
//用法:
double t = (double)getTickCount();
// do something ...
t = ((double)getTickCount() - t)/getTickFrequency();
//可以得出这段程序运行的时间,可以用于比较效率

5>saturate_cast
将表达式的值转化成另外的类型,并且防止溢出

template<...> _Tp saturate_cast(_Tp2 v)
exp:
dst=saturate_cast<uchar>(src);
//if(src>255) dst=255,if(src<0) dst=0
`/proc/sys` 是一个虚拟文件系统,它提供了一种机制,允许用户和进程在运行时动态地修改内核参数。在该目录中,有许多文件和子目录,每个文件或目录都表示内核的一个参数或设置。下面是 `/proc/sys` 中一些常见的文件和目录: - `/proc/sys/kernel` 目录包含了一些内核的参数设置,比如 `hostname`(主机名)、`osrelease`(操作系统版本)、`domainname`(域名)等。 - `/proc/sys/net` 目录包含了一些网络设置,比如 `ipv4`(IPv4协议相关设置)、`ipv6`(IPv6协议相关设置)、`core`(网络协议核心设置)、`bridge`(桥接设置)等。 - `/proc/sys/fs` 目录包含了一些文件系统相关的设置,比如 `file-max`(系统所能打开的最大文件数)、`inode-max`(系统所能创建的最大文件节点数)、`dentry-state`(内核中目录项的数量)、`file-nr`(当前系统所打开的文件数)等。 - `/proc/sys/vm` 目录包含了一些虚拟内存相关的设置,比如 `swappiness`(内存页面的交换频率)、`overcommit_memory`(内存过度分配策略)、`dirty_ratio`(脏页占用内存的比例)、`oom_kill_allocating_task`(是否杀死分配内存的任务)等。 - `/proc/sys/kernel/random` 目录包含了一些随机数生成器相关的设置,比如 `entropy_avail`(可用的熵池大小)、`boot_id`(系统启动时生成的唯一标识符)、`read_wakeup_threshold`(熵池读取阈值)等。 总之,`/proc/sys` 目录中的文件和目录都代表了内核的一些设置和参数,可以通过修改这些文件和目录来动态地调整内核的行为和性能。但需要注意的是,不正确的修改可能会导致系统不稳定或者出现不可预期的行为,因此在修改之前应该仔细阅读相关文档,并谨慎操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值