OpenCV (iOS)隨機(jī)數(shù)發(fā)生器(7)

隨機(jī)發(fā)生器 (RNG全稱Random number generator

通過隨機(jī)發(fā)生器(RNG)生成得到均勻分布的隨機(jī)數(shù)。

代碼與解析(畫圓為例)

(1)首先生成一個(gè)Random Number Generator對(duì)象(RNG):

// 用數(shù)值 0xFFFFFFFF 來實(shí)例化的一個(gè)RNG對(duì)象

RNG rng(0xFFFFFFFF);

(2)創(chuàng)建一個(gè)空?qǐng)D像

Mat image = Mat::zeros(self.view.bounds.size.width, self.view.bounds.size.height, CV_8SC3);

(3)調(diào)用畫圓的方法

drawingRandomCircle(image, rng);

(4)畫圓的實(shí)現(xiàn)方法(注意 :這里rng.uniform(n, m);是表示集合[n, m)即 :

n <= rng.uniform(n, m) < m)

void drawingRandomCircle(Mat& image,RNG rng)

{

int circle_thickness = 2;

int circle_lineType = 8;

cv::Point point;

for (int i = 0; i < number; i++) {

point.x = rng.uniform(1, 600);

point.y = rng.uniform(1, 300);

int w = rng.uniform(1, 50);

cv::circle(image, point, w,randomColor(rng),circle_thickness,circle_lineType);

}

}

randomColor函數(shù)的實(shí)現(xiàn) :

// 該函數(shù)返回 Scalar 類型,線條的顏色 (R, G, B)

static Scalar randomColor( RNG& rng) {

int icolor = (unsigned) rng;? ?

?returnScalar( icolor&255, (icolor>>8)&255, (icolor>>16)&255 );

}

繪制到圖片

imagView1.image = MatToUIImage(image);


代碼調(diào)用

UIImageView *imagView1 = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

number = 50;

[self.view addSubview:imagView1];

RNG rng(0xFFFFFFFF);

Mat image = Mat::zeros(self.view.bounds.size.width, self.view.bounds.size.height, CV_8SC3);

//? ? drawingRandomEllipses(image, rng);// 繪制橢圓

drawingRandomCircle(image, rng);// 繪制圓

imagView1.image = MatToUIImage(image);

實(shí)現(xiàn)效果


繪制橢圓的方法

void drawingRandomEllipses(Mat& image,RNG rng)

{

// 線形

int ellipses_lineType = 8;

// 創(chuàng)建像素點(diǎn),這個(gè)用來存放弧線的中心位置

cv::Point point;

// 這個(gè)用來存放弧線的長軸和短軸的大小

cv::Size size;

// 這里的number是全局int常量,表示繪制number條弧線

for (int i = 0; i < number; i++) {

// 隨機(jī)生成弧線的中心點(diǎn)(x,y)

point.x = rng.uniform(1, 501);

point.y = rng.uniform(1, 501);

// 隨機(jī)生成弧線長短軸(a,b)

size.width = rng.uniform(1, 501);

size.height = rng.uniform(1, 501);

// 畫弧線

cv::ellipse(image, point, size, rng.uniform(0, 360), rng.uniform(0, 360), rng.uniform(0, 360), randomColor(rng),rng.uniform(1, 10),ellipses_lineType);

}

}

參考資料

OpenCV for iOS 學(xué)習(xí)筆記(六)—— 隨機(jī)數(shù)發(fā)生器

隨機(jī)數(shù)發(fā)生器&繪制文字

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 環(huán)境配置 :OpenCV在xCode中的安裝與環(huán)境配置 隨機(jī)發(fā)生器 (RNG 全稱 Random number g...
    FLNuo閱讀 908評(píng)論 0 2
  • 不管什么樣的人,如果與別人構(gòu)建不好關(guān)系,都體驗(yàn)不到幸福。 面對(duì)陌生人,很難去溝通和交流,宅在家里會(huì)讓自己很舒服,在...
    423429d90f38閱讀 223評(píng)論 0 0
  • 1.追求 云在天上 土在遠(yuǎn)方 云很薄 土卻很厚 2.理想之火 蜘蛛網(wǎng)盤結(jié)了小屋 綠色玻璃已經(jīng)破碎 開啟封存了的壇罐...
    望北集閱讀 199評(píng)論 1 6
  • 何為緣,即是上輩子未償?shù)膫?緣,終究是命。命,只得由天。 都說命中注定,這事也注定,那事也管得,一切自有上天安排...
    佑卿劍閱讀 277評(píng)論 0 0

友情鏈接更多精彩內(nèi)容