OpenCV (iOS)隨機數發生器(7)

一個蘿蔔壹個坑發表於2017-12-22

隨機發生器 (RNG全稱Random number generator)

通過隨機發生器(RNG)生成得到均勻分佈的隨機數。

程式碼與解析(畫圓為例)

(1)首先生成一個Random Number Generator物件(RNG):

// 用數值 0xFFFFFFFF 來例項化的一個RNG物件

RNG rng(0xFFFFFFFF);

(2)建立一個空影象

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

(3)呼叫畫圓的方法

drawingRandomCircle(image, rng);

(4)畫圓的實現方法(注意 :這裡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函式的實現 :

// 該函式返回 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);


程式碼呼叫

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);

實現效果


OpenCV (iOS)隨機數發生器(7)

繪製橢圓的方法

void drawingRandomEllipses(Mat& image,RNG rng)

{

// 線形

int ellipses_lineType = 8;

// 建立畫素點,這個用來存放弧線的中心位置

cv::Point point;

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

cv::Size size;

// 這裡的number是全域性int常量,表示繪製number條弧線

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

// 隨機生成弧線的中心點(x,y)

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

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

// 隨機生成弧線長短軸(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 學習筆記(六)—— 隨機數發生器

隨機數發生器&繪製文字

相關文章