1793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 2793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @file Drawing_2.cpp 3793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @brief Simple sample code 4793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 5793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 6793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <opencv2/core.hpp> 7793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <opencv2/imgproc.hpp> 8793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <opencv2/highgui.hpp> 9793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <iostream> 10793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler#include <stdio.h> 11793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 12793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerusing namespace cv; 13793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 14793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/// Global Variables 15793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerconst int NUMBER = 100; 16793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerconst int DELAY = 5; 17793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 18793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerconst int window_width = 900; 19793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerconst int window_height = 600; 20793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint x_1 = -window_width/2; 21793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint x_2 = window_width*3/2; 22793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint y_1 = -window_width/2; 23793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint y_2 = window_width*3/2; 24793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 25793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/// Function headers 26793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerstatic Scalar randomColor( RNG& rng ); 27793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Lines( Mat image, char* window_name, RNG rng ); 28793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Rectangles( Mat image, char* window_name, RNG rng ); 29793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Ellipses( Mat image, char* window_name, RNG rng ); 30793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Polylines( Mat image, char* window_name, RNG rng ); 31793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Filled_Polygons( Mat image, char* window_name, RNG rng ); 32793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Circles( Mat image, char* window_name, RNG rng ); 33793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Displaying_Random_Text( Mat image, char* window_name, RNG rng ); 34793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Displaying_Big_End( Mat image, char* window_name, RNG rng ); 35793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 36793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 37793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 38793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function main 39793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 40793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint main( void ) 41793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 42793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int c; 43793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 44793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Start creating a window 45793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler char window_name[] = "Drawing_2 Tutorial"; 46793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 47793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Also create a random object (RNG) 48793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler RNG rng( 0xFFFFFFFF ); 49793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 50793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Initialize a matrix filled with zeros 51793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat image = Mat::zeros( window_height, window_width, CV_8UC3 ); 52793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Show it in a window during DELAY ms 53793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 54793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler waitKey( DELAY ); 55793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 56793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Now, let's draw some lines 57793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Drawing_Random_Lines(image, window_name, rng); 58793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 59793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 60793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Go on drawing, this time nice rectangles 61793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Drawing_Random_Rectangles(image, window_name, rng); 62793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 63793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 64793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Draw some ellipses 65793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Drawing_Random_Ellipses( image, window_name, rng ); 66793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 67793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 68793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Now some polylines 69793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Drawing_Random_Polylines( image, window_name, rng ); 70793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 71793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 72793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Draw filled polygons 73793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Drawing_Random_Filled_Polygons( image, window_name, rng ); 74793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 75793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 76793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Draw circles 77793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Drawing_Random_Circles( image, window_name, rng ); 78793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 79793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 80793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Display text in random positions 81793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Displaying_Random_Text( image, window_name, rng ); 82793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 83793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 84793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler /// Displaying the big end! 85793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler c = Displaying_Big_End( image, window_name, rng ); 86793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( c != 0 ) return 0; 87793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 88793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler waitKey(0); 89793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 90793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 91793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 92793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/// Function definitions 93793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 94793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 95793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function randomColor 96793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @brief Produces a random color given a random object 97793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 98793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerstatic Scalar randomColor( RNG& rng ) 99793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 100793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int icolor = (unsigned) rng; 101793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return Scalar( icolor&255, (icolor>>8)&255, (icolor>>16)&255 ); 102793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 103793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 104793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 105793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 106793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Drawing_Random_Lines 107793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 108793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Lines( Mat image, char* window_name, RNG rng ) 109793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 110793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point pt1, pt2; 111793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 112793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for( int i = 0; i < NUMBER; i++ ) 113793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 114793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt1.x = rng.uniform( x_1, x_2 ); 115793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt1.y = rng.uniform( y_1, y_2 ); 116793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt2.x = rng.uniform( x_1, x_2 ); 117793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt2.y = rng.uniform( y_1, y_2 ); 118793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 119793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler line( image, pt1, pt2, randomColor(rng), rng.uniform(1, 10), 8 ); 120793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 121793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey( DELAY ) >= 0 ) 122793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 123793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 124793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 125793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 126793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 127793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 128793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 129793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Drawing_Rectangles 130793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 131793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Rectangles( Mat image, char* window_name, RNG rng ) 132793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 133793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point pt1, pt2; 134793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 135793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int thickness = rng.uniform( -3, 10 ); 136793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 137793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for( int i = 0; i < NUMBER; i++ ) 138793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 139793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt1.x = rng.uniform( x_1, x_2 ); 140793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt1.y = rng.uniform( y_1, y_2 ); 141793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt2.x = rng.uniform( x_1, x_2 ); 142793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt2.y = rng.uniform( y_1, y_2 ); 143793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 144793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler rectangle( image, pt1, pt2, randomColor(rng), MAX( thickness, -1 ), lineType ); 145793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 146793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 147793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey( DELAY ) >= 0 ) 148793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 149793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 150793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 151793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 152793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 153793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 154793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 155793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Drawing_Random_Ellipses 156793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 157793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Ellipses( Mat image, char* window_name, RNG rng ) 158793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 159793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 160793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 161793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for ( int i = 0; i < NUMBER; i++ ) 162793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 163793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point center; 164793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler center.x = rng.uniform(x_1, x_2); 165793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler center.y = rng.uniform(y_1, y_2); 166793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 167793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Size axes; 168793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler axes.width = rng.uniform(0, 200); 169793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler axes.height = rng.uniform(0, 200); 170793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 171793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler double angle = rng.uniform(0, 180); 172793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 173793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler ellipse( image, center, axes, angle, angle - 100, angle + 200, 174793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler randomColor(rng), rng.uniform(-1,9), lineType ); 175793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 176793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 177793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 178793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey(DELAY) >= 0 ) 179793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 180793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 181793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 182793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 183793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 184793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 185793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 186793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Drawing_Random_Polylines 187793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 188793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Polylines( Mat image, char* window_name, RNG rng ) 189793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 190793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 191793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 192793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for( int i = 0; i< NUMBER; i++ ) 193793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 194793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point pt[2][3]; 195793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][0].x = rng.uniform(x_1, x_2); 196793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][0].y = rng.uniform(y_1, y_2); 197793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][1].x = rng.uniform(x_1, x_2); 198793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][1].y = rng.uniform(y_1, y_2); 199793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][2].x = rng.uniform(x_1, x_2); 200793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][2].y = rng.uniform(y_1, y_2); 201793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][0].x = rng.uniform(x_1, x_2); 202793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][0].y = rng.uniform(y_1, y_2); 203793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][1].x = rng.uniform(x_1, x_2); 204793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][1].y = rng.uniform(y_1, y_2); 205793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][2].x = rng.uniform(x_1, x_2); 206793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][2].y = rng.uniform(y_1, y_2); 207793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 208793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler const Point* ppt[2] = {pt[0], pt[1]}; 209793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int npt[] = {3, 3}; 210793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 211793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler polylines(image, ppt, npt, 2, true, randomColor(rng), rng.uniform(1,10), lineType); 212793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 213793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 214793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey(DELAY) >= 0 ) 215793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 216793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 217793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 218793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 219793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 220793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 221793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Drawing_Random_Filled_Polygons 222793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 223793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Filled_Polygons( Mat image, char* window_name, RNG rng ) 224793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 225793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 226793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 227793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for ( int i = 0; i < NUMBER; i++ ) 228793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 229793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point pt[2][3]; 230793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][0].x = rng.uniform(x_1, x_2); 231793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][0].y = rng.uniform(y_1, y_2); 232793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][1].x = rng.uniform(x_1, x_2); 233793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][1].y = rng.uniform(y_1, y_2); 234793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][2].x = rng.uniform(x_1, x_2); 235793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[0][2].y = rng.uniform(y_1, y_2); 236793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][0].x = rng.uniform(x_1, x_2); 237793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][0].y = rng.uniform(y_1, y_2); 238793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][1].x = rng.uniform(x_1, x_2); 239793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][1].y = rng.uniform(y_1, y_2); 240793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][2].x = rng.uniform(x_1, x_2); 241793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler pt[1][2].y = rng.uniform(y_1, y_2); 242793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 243793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler const Point* ppt[2] = {pt[0], pt[1]}; 244793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int npt[] = {3, 3}; 245793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 246793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler fillPoly( image, ppt, npt, 2, randomColor(rng), lineType ); 247793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 248793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 249793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey(DELAY) >= 0 ) 250793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 251793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 252793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 253793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 254793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 255793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 256793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Drawing_Random_Circles 257793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 258793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Drawing_Random_Circles( Mat image, char* window_name, RNG rng ) 259793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 260793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 261793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 262793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for (int i = 0; i < NUMBER; i++) 263793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 264793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point center; 265793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler center.x = rng.uniform(x_1, x_2); 266793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler center.y = rng.uniform(y_1, y_2); 267793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 268793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler circle( image, center, rng.uniform(0, 300), randomColor(rng), 269793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler rng.uniform(-1, 9), lineType ); 270793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 271793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 272793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey(DELAY) >= 0 ) 273793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 274793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 275793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 276793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 277793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 278793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 279793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 280793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Displaying_Random_Text 281793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 282793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Displaying_Random_Text( Mat image, char* window_name, RNG rng ) 283793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 284793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 285793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 286793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for ( int i = 1; i < NUMBER; i++ ) 287793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 288793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point org; 289793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler org.x = rng.uniform(x_1, x_2); 290793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler org.y = rng.uniform(y_1, y_2); 291793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 292793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler putText( image, "Testing text rendering", org, rng.uniform(0,8), 293793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler rng.uniform(0,100)*0.05+0.1, randomColor(rng), rng.uniform(1, 10), lineType); 294793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 295793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image ); 296793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey(DELAY) >= 0 ) 297793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 298793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 299793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 300793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 301793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 302793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 303793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler/** 304793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler * @function Displaying_Big_End 305793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler */ 306793ee12c6df9cad3806238d32528c49a3ff9331dNoah Preslerint Displaying_Big_End( Mat image, char* window_name, RNG ) 307793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler{ 308793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Size textsize = getTextSize("OpenCV forever!", FONT_HERSHEY_COMPLEX, 3, 5, 0); 309793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Point org((window_width - textsize.width)/2, (window_height - textsize.height)/2); 310793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler int lineType = 8; 311793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 312793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Mat image2; 313793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 314793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler for( int i = 0; i < 255; i += 2 ) 315793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { 316793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler image2 = image - Scalar::all(i); 317793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler putText( image2, "OpenCV forever!", org, FONT_HERSHEY_COMPLEX, 3, 318793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler Scalar(i, i, 255), 5, lineType ); 319793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 320793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler imshow( window_name, image2 ); 321793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler if( waitKey(DELAY) >= 0 ) 322793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler { return -1; } 323793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler } 324793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler 325793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler return 0; 326793ee12c6df9cad3806238d32528c49a3ff9331dNoah Presler} 327