-
环境配置 :OpenCV在xCode中的安装与环境配置
-
随机发生器 (RNG 全称 Random number generator)
- 通过随机发生器(RNG)生成得到均匀分布的随机数。
-
在这里会用到OpenCV基本绘图的知识
-
代码与解析(以画弧线为示例)
- 首先生成一个 Random Number Generator 对象(RNG):
// 用数值 0xFFFFFFFF 来实例化的一个RNG对象
RNG rng( 0xFFFFFFFF );- 创建一个0矩阵(空图像),并且指定它的宽度,高度,和像素格式 :
// 初始化一个0矩阵 w 是定义的全局 double 常量(图像像素宽高)
Mat image = Mat::zeros( w, w, CV_8UC3 );- 调用画弧线的方法 :
drawingRandomEllipses(imag, rng);drawingRandomEllipses
方法实现 :
注意 :这里rng.uniform(n, m);
是表示集合[n, m)
即 :
n <= rng.uniform(n, m) < m
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);
// 画弧
ellipse(image, // 将弧线载入图像 image
point, // 弧线中点
size, // 弧线长短轴
rng.uniform(0, 360), // 圆弧偏移角度,使用 RNG 随机生成
rng.uniform(0, 360), // 圆弧的开始角度,使用 RNG 随机生成
rng.uniform(0, 360), // 圆弧的结束角度,使用 RNG 随机生成
randomColor(rng), // randomColor 自定义函数(下面会提供)
rng.uniform(1, 10), // 圆弧的线条粗细,使用 RNG 随机生成
ellipses_lineType); // 线型
}
}
- �
randomColor
函数的实现 :
// 该函数返回 Scalar 类型,线条的颜色 (R, G, B)
static Scalar randomColor( RNG& rng ) {
int icolor = (unsigned) rng;
return Scalar( icolor&255, (icolor>>8)&255, (icolor>>16)&255 );
}xCode中如何调用
-
效果图
-
参考资料 :随机数发生器