OpenCV (iOS)随机数发生器(7)

随机发生器 (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)_第1张图片

绘制椭圆的方法

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 学习笔记(六)—— 随机数发生器

随机数发生器&绘制文字

你可能感兴趣的:(OpenCV (iOS)随机数发生器(7))