OpenCV學習 隨機數發生器 繪製文字

2021-06-28 00:24:12 字數 4784 閱讀 1007

opencv_tutorials學習

隨機數發生器&繪製文字

學習知識點:

隨機數發生器

直線、折現、矩形、圓、圓弧等的繪製

文字的顯示

**分析:

例項化random number generator(隨機數發生器物件)(rng)

rng的實現了乙個隨機數發生器。 在上面的例子中, 

rng是用數值 

0xffffffff

來例項化的乙個rng物件。

rng rng( 0xffffffff );
主函式中的繪製影象程式呼叫

/// 現在我們先畫線

c = drawing_random_lines(image, window_name, rng);

if( c != 0 ) return 0;

/// 繼續,這次是一些矩形

c = drawing_random_rectangles(image, window_name, rng);

if( c != 0 ) return 0;

/// 畫一些弧線

c = drawing_random_ellipses( image, window_name, rng );

if( c != 0 ) return 0;

/// 畫一些折線

c = drawing_random_polylines( image, window_name, rng );

if( c != 0 ) return 0;

/// 畫被填充的多邊形

c = drawing_random_filled_polygons( image, window_name, rng );

if( c != 0 ) return 0;

/// 畫圓

c = drawing_random_circles( image, window_name, rng );

if( c != 0 ) return 0;

/// 在隨機的地方繪製文字

c = displaying_random_text( image, window_name, rng );

if( c != 0 ) return 0;

/// displaying the big end!

c = displaying_big_end( image, window_name, rng );

函式drawing_random_lines

int drawing_random_lines( mat image, char* window_name, rng rng )

} return 0;

}

其中,for迴圈number次

隨機顏色產生函式

static scalar randomcolor( rng& rng )

display_random_text函式

int displaying_random_text( mat image, char* window_name, rng rng )

} return 0;

}

其中,puttext函式說明如下:

字型的粗細範圍是從 1 到 10, 表示為 rng.uniform(1,10)

附錄:opencv提供的函式實現(自己寫的注釋,請謹慎參考)

/**

* @file drawing_2.cpp

* @brief ****** sample code

*/#include //opencv標頭檔案

#include #include #include using namespace cv; //使用命名空間

/// global variables

const int number = 100; //定義整形常量

const int delay = 5;

const int window_width = 900; //視窗大小定義

const int window_height = 600;

int x_1 = -window_width/2;

int x_2 = window_width*3/2;

int y_1 = -window_width/2;

int y_2 = window_width*3/2;

/// function headers 函式說明

static scalar randomcolor( rng& rng );

int drawing_random_lines( mat image, char* window_name, rng rng );

int drawing_random_rectangles( mat image, char* window_name, rng rng );

int drawing_random_ellipses( mat image, char* window_name, rng rng );

int drawing_random_polylines( mat image, char* window_name, rng rng );

int drawing_random_filled_polygons( mat image, char* window_name, rng rng );

int drawing_random_circles( mat image, char* window_name, rng rng );

int displaying_random_text( mat image, char* window_name, rng rng );

int displaying_big_end( mat image, char* window_name, rng rng );

/** * @function main

*/int main( void )

/// function definitions

/** * @function randomcolor

* @brief produces a random color given a random object

*/static scalar randomcolor( rng& rng )

/** * @function drawing_random_lines

*/int drawing_random_lines( mat image, char* window_name, rng rng )//畫隨機線條 number條

} return 0;

}/**

* @function drawing_rectangles

*/int drawing_random_rectangles( mat image, char* window_name, rng rng )

} return 0;

}/**

* @function drawing_random_ellipses

*/int drawing_random_ellipses( mat image, char* window_name, rng rng )

} return 0;

}/**

* @function drawing_random_polylines

*/int drawing_random_polylines( mat image, char* window_name, rng rng )

; int npt = ;

polylines(image, ppt, npt, 2, true, randomcolor(rng), rng.uniform(1,10), linetype);

imshow( window_name, image );

if( waitkey(delay) >= 0 )

} return 0;

}/**

* @function drawing_random_filled_polygons

*/int drawing_random_filled_polygons( mat image, char* window_name, rng rng )

; int npt = ;

fillpoly( image, ppt, npt, 2, randomcolor(rng), linetype );

imshow( window_name, image );

if( waitkey(delay) >= 0 )

} return 0;

}/**

* @function drawing_random_circles

*/int drawing_random_circles( mat image, char* window_name, rng rng )

} return 0;

}/**

* @function displaying_random_text

*/int displaying_random_text( mat image, char* window_name, rng rng )

} return 0;

}/**

* @function displaying_big_end

*/int displaying_big_end( mat image, char* window_name, rng )

} return 0;

}

opencv隨機數發生器RNG

用opencv做演算法的朋友們肯定為隨機數煩惱過,新版本一直支援隨機數產生器啦,而且還繼續支援之前版本的c格式的函式,不過與時俱進,我這裡介紹c 的rng類。它可以壓縮乙個64位的i整數並可以得到scalar和array的隨機數。目前的版本支援均勻分布隨機數和gaussian分布隨機數。隨機數的產生...

boost 隨機數發生器

在很多應用中都需要使用隨機數。本庫力求提供乙個高效的,通用的隨機數庫。boost庫有多種隨機數生成方式。先熟悉一下各種隨機數生成器的概念。數字生成器 number generator 它是乙個函式物件,沒有引數。類似於常見的rand 均勻隨機數生成器 uniform random number ge...

產生隨意隨機數發生器

怎樣利用給定的隨機數發生器產生其它隨意你想得到的隨機數發生器。假定給定的隨機數發生器是變數產生離散變數x 服從某一分布 比如均勻分布。高斯分布等等 隨意你想得到的隨機數發生器滿足分布 y,如果x和 y其概率密度分布函式分布為 g x h y 假定用x 隨機數發生器產生 y隨機數發生器,以下分為2步求...