首页 > 代码库 > OpenCV笔记(六)——随机数产生器、绘制文字

OpenCV笔记(六)——随机数产生器、绘制文字

一、随机数产生器

在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坐标。

 

 

OpenCV笔记(六)——随机数产生器、绘制文字