OpenCV进阶---随机数生成器与text

1. 学习目标:

目标

OpenCV函数

Random Number generato(随机数生成)

RNG

text(文本编写)

putText

2. OpenCV理论

       在本教程中,我们打算对绘图参数使用随机值。 此外,我们打算用大量的几何图形填充我们的图像。 由于我们将以随机方式初始化它们,因此该过程将是自动的并且通过使用循环来完成。

3. Code(略)

4. 代码详解

RNG rng( 0xFFFFFFFF );

     初始化 rng

建一张图

Mat image = Mat::zeros( window_height, window_width, CV_8UC3 );
imshow( window_name, image );

画随机线

int Drawing_Random_Lines( Mat image, char* window_name, RNG rng )
{
  int lineType = 8;
  Point pt1, pt2;
  for( int i = 0; i < NUMBER; i++ )
  {
   pt1.x = rng.uniform( x_1, x_2 );
   pt1.y = rng.uniform( y_1, y_2 );
   pt2.x = rng.uniform( x_1, x_2 );
   pt2.y = rng.uniform( y_1, y_2 );
   line( image, pt1, pt2, randomColor(rng), rng.uniform(1, 10), 8 );
   imshow( window_name, image );
   if( waitKey( DELAY ) >= 0 )
   { return -1; }
  }
  return 0;
}

我们可以观察到以下内容:
        for循环将重复NUMBER次。 由于函数cv :: line在此循环内,这意味着将生成NUMBER行。
        极值线由pt1和pt2给出。 对于pt1,我们可以看到:    

                    pt1.x = rng.uniform( x_1, x_2 );

                    pt1.y = rng.uniform( y_1, y_2 );

                               我们知道rng是随机数生成器对象。 在上面的代码中,我们调用rng.uniform(a,b)。 这在值a和b之间产生随                      机均匀的分布( [a,b)   )。
                                从上面的解释,我们推断极值pt1和pt2将是随机值,因此线位置将是非常不可预测的,给出了良好的视觉效果                      (请查看下面的结果部分)。
                    作为另一个观察,我们注意到在cv :: line参数中,对于我们输入的颜色输入:

                       randomColor(rng);  //随机颜色

Text

putText( image, "Testing text rendering", org, rng.uniform(0,8),
             rng.uniform(0,100)*0.05+0.1, randomColor(rng), rng.uniform(1, 10), lineType);

Result

猜你喜欢

转载自blog.csdn.net/red_ear/article/details/88943140