一、随机数产生器
在OpenCV中,我们主要使用RNG类(即Random Number Generator)来产生随机数。
RNG rng(); // 默认以0xffffffff作为随机数产生器的种子
我们也可以以系统的当前时间作为随机数产生器的种子。这也是常用的手段。
#include <time.h>
RNG rng( (unsigned int)time(NULL) );
另外,我们可以产生一定范围内的均匀分布或者高斯分布(均值为零)的随机数
rng.uniform(0, 10); // 产生[0, 10)的均匀分布的整型随机数
rng.gaussian(sigma); // 参数sigma为高斯分布的标准差,则随机数在(-sigma, sigma)、(-2*sigma, 2*sigma)、(-3*sigma, 3*sigma)的概率分别为0.6826、0.9544、0.9974。
其实uniform方法的实现机制很简单:
inline int RNG::uniform(int a, int b) { return a == b ? a : (int)(next()%(b - a) + a); } // 其中next()返回一个随机数
二、绘制文字
主要有两个方法putText和getTextSize。
void putText(Mat& img, const string& text, Point org, int fontFace, double fontScale, Scalar color, int thickness=1, int lineType=8, bool bottomLeftOrigin=false)
这个函数在图像中绘制文字。
text表示传入的文字。
org表示文字的左上角/左下角的坐标,取决于最后一个参数。
fonFace表示字体,从数字0到7,然后16,分别代表9种字体,详细见文档。
fontScale表示文字的大小,文字基准大小乘以fontScale,就是文字的最终尺寸。
bottomLeftOrigin为false的时候,以参数org为文字的左上角。true的时候,以参数org为文字的左下角。
Size getTextSize(const string& text, int fontFace, double fontScale, int thickness, int* baseLine)
这个函数返回文字在图像中所占的尺寸,即width和height。
函数向baseline写入文字底部最低处的y坐标。