Opencvランダムジェネレータとテキスト

2421 ワード

乱数ジェネレータオブジェクト(RNG)を作成します.
RNG rng(0xFFFFFFFF)
  • ゼロに初期化されたマトリクス(黒)を作成し、その高さ、幅、タイプを指定します.
  • Mat image = Mat :: zeros(window_height,window_width,CV_8UC3);
    imshow(window_name,image);
    幾何学的図形
  • を描くことができます.
  • c = Drawing_Random_Circles(image,window_name,rng);
    if(c!= 0)return 0;
    c = Drawing_Random_Rectangles(image,window_name,rng);
    if(c!= 0)return 0;
    検出関数Drawing_Random_Lines:
  • 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 );  //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 ); // randomColor()      
       imshow( window_name, image );
       if( waitKey( DELAY ) >= 0 )
       { return -1; }
      }
      return 0;
    }
    Display_Random_TextとDispalying_Big_Endの機能
  • Display_Random_Text
  • int Displaying_Random_Text( Mat image, char* window_name, RNG rng )
    {
      int lineType = 8;
      for ( int i = 1; i < NUMBER; i++ )
      {
        Point org;
        org.x = rng.uniform(x_1, x_2);
        org.y = rng.uniform(y_1, y_2);
        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); //    **“      ”**    
        imshow( window_name, image );
        if( waitKey(DELAY) >= 0 )
          { return -1; }
      }
      return 0;
    }
    Dispalying_Big_End
  • int Displaying_Big_End( Mat image, char* window_name, RNG rng )
    {
      Size textsize = getTextSize("OpenCV forever!", FONT_HERSHEY_COMPLEX, 3, 5, 0);
      Point org((window_width - textsize.width)/2, (window_height - textsize.height)/2);
      int lineType = 8;
      Mat image2;
      for( int i = 0; i < 255; i += 2 )
      {
        image2 = image - Scalar::all(i); //,image2    Scalar :: all(i)   。   ,        ,image2                  i  (  ,      ,       , R,G B,           )
        putText( image2, "OpenCV forever!", org, FONT_HERSHEY_COMPLEX, 3,
               Scalar(i, i, 255), 5, lineType );
        imshow( window_name, image2 );
        if( waitKey(DELAY) >= 0 )
          { return -1; }
      }
      return 0;
    }

    テスト: