OpenCV隨機方法的使用

2021-05-28 08:00:22 字數 1756 閱讀 5290

opencv也提供了另乙個資料結構來做rand的實作,cvrandstate,被包在"cvcompat.h"裡,"cvcompat.h"的完整意 思是computer vision compatility,cvrandstate的特色是可以選定常態分布及均勻分布,不過,它只能運用在矩陣跟一維陣列.

矩陣的部份程式**如下

randstate矩陣的實作

#include #include int main()

這 個結果也好玩了,因為它隨機的範圍rgb值都不一樣,因此執行結果為偏綠色的隨機數,這邊,開啟了乙個channel為3的rgb圖形,給他全0的值,讓 他變成黑色,接著,使用cvrandstate資料結構,用cvrandinit()初始化它,隨機範圍是0~255,種子是時間(可輸入大小為 64bits),均勻分布,這裡會使個它的隨機rgb值範圍都是0~255,接著,用cvrandsetrange()改變了b(第三個引數)值的範圍為 0~127,再用cvrandsetrange()改變g值範圍為128~255,而r值,沒有被cvrandsetrange()改變到,因此它的範圍 是0~255,再來就是設定圖形啦,給它的是image1及被設定過後的randstate1,會對圖形自動產生隨機,跟cvarr()一樣,不過這邊可 以任意改變rgb值範圍,而這裡不一定是要用到通道3的rgb值,可以用通道格式為1,2,3的圖形.

再來是一維陣列的實作

randstate一維陣列的實作

#include #include #include #include int main()

system("pause");

free(&randstate1);

}

這 邊開啟了乙個空間為20個float陣列,randstate1資料結構及初始化它,給他常態分布,平均數為30標準偏差為20,及以時間的種子,再用 cvbrand()製作常態分布隨機數組,給他cvrandstate資料結構,float陣列名,及隨機的大小,亦可以隨機到前十個陣列空間就好.這 裡陣列規定要用float型別做隨機實作,在做printf()就必須要用"%f".

cvrandinit()

初始化cvrandstate資料結構,可以選定隨機分布的種類,並給定它種子,有兩種情形

cvrandinit(cvrandstate資料結構,隨機上界,隨機下界,均勻分布引數,64bits種子的數字)

cvrandinit(cvrandstate資料結構,平均數,標準偏差,常態分布引數,64bits種子的數字)

(問題編譯器如何識別?)

cvrandsetrange()

修改cvrandstate資料結構的引數內容,均勻分布的話可以每個通道的上下界常態分布可以修改每個通道的平均數,標準偏差.

cvrandsetrange(cvrandstate資料結構,均勻分布上界,均勻分布下界,目標通道資料)

cvrandsetrange(cvrandstate資料結構,常態分布平均數,常態分布標準偏差,目標通道資料)

cvrand()

將cvmat或iplimage資料結構隨機化,用被設定過的cvrandstate資料結構來隨機.

cvrand(cvrandstate資料結構,cvmat或iplimage資料結構)

cvbrand()

將一維陣列隨機化,可以設定隨機的長度

cvbrand(randstate資料結構,float型別陣列名,隨機的長度);

opencv 隨機數使用

包含標頭檔案 include 返回隨機int的函式原型 returns a random integer sampled uniformly from 0,n unsigned operator unsigned n 例子 rng rng therng unsigned int rand num r...

opencv中cvCircle的使用方法

circle 中文含義指 即圓形。cvcircle是指繪製圓形的乙個程式函式。void cvcircle cvarr img,cvpoint center,int radius,cvscalar color,int thickness 1,int line type 8,int shift 0 函式...

opencv產生隨機數

在很多過程中,我們需要生成一些隨機數,opencv中生成隨機數的方法如下 測試程式如下 每次生成20個 0,100 之間的隨機數,共生成10次 include include include opencv2 highgui highgui.hpp using namespace cv using n...