此类用于产生随机数
rng.uniform(0, 255); 在[0,255)区间,随机生成一个整数
void QuickDemo::random_drawing_demo() {
Mat canvas = Mat::zeros(Size(512,512),CV_8UC3);
int w = canvas.cols;
int h = canvas.rows;
RNG rng(12345);//构造方法设定一个具体值,表示下面代码每次生成的结果都是一样的
while (true) {
int c = waitKey(10);//等待10ms,如果键盘没有输入返回值为-1,当键盘有输入返回对应的码值(在做视频分析是这里需要改为(waitKey(1)))
if (c == 27)//退出
{
cout << "you enter key #Esc" << endl;
break;//跳出循环
}
int x1 = rng.uniform(0,w);
int y1 = rng.uniform(0,h);
int x2 = rng.uniform(0, w);
int y2 = rng.uniform(0, h);
int b = rng.uniform(0, 255);//从[0,255)范围内随机一个值
int g = rng.uniform(0, 255);
int r = rng.uniform(0, 255);
Rect rect;
rect.x = rng.uniform(0, w);
rect.y = rng.uniform(0, h);
rect.width = 100;
rect.height = 100;
//canvas = Scalar(0,0,0);
//line(canvas, Point(x1, y1), Point(x2, y2), Scalar(r, g, b), 2, 8, 0);//绘制线
//circle(canvas, Point(x1, y1), 15, Scalar(b, g, r), 2, 8, 0);//绘制圆
rectangle(canvas, rect, Scalar(b, g, r), 2, 8, 0);//绘制矩形
imshow("随机绘制",canvas);
}
}