一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