在上一篇中,我们了解了如何使用opencv为我们提供的基本绘图函数来为我们来绘制一个简单的图像。在这一篇中,我们将继续使用上一篇中所讲到的函数来演示opencv的随机数产生功能以及如何绘制文字。
随机数产生器
在我们的程序中,经常需要使用随机数生成功能。为此,opencv为我们提供了一个随机数生成器类,RNG。它封装了一个64位的int类型整数,为此我们课可以得到一个随机的Scalar和随机的数组。目前,它支持产生均匀分布随机数和高斯分布随机数。
它的构造函数的初始化可以传入一个64位的整型参数作为随机数产生器的初值。RNG类的定义大致如下:
/*!
Random Number Generator
The class implements RNG using Multiply-with-Carry algorithm
*/
class CV_EXPORTS RNG
{
public:
enum { UNIFORM=0, NORMAL=1 };
RNG();
RNG(uint64 state);
//! updates the state and returns the next 32-bit unsigned integer random number
unsigned next();
operator uchar();
operator schar();
operator ushort();
operator short();
operator unsigned();
//! returns a random integer sampled uniformly from [0, N).
unsigned operator ()(unsigned N);
unsigned operator ()();
operator int();
operator float();
operator double();
//! returns uniformly distributed integer random number from [a,b) range
int uniform(int a, int b);
//! returns uniformly distributed floating-point random number from [a,b) range
float uniform(float a, float b);
//! returns uniformly distributed double-precision floating-point random number from [a,b) range
double uniform(double a, double b);
void fill( InputOutputArray mat, int distType, InputArray a, InputArray b, bool saturateRange=false );
//! returns Gaussian random variate with mean zero.
double gaussian(double sigma);
uint64 state;
};