美文网首页IOSiOS Developer计算机技术一锅炖
OpenCV for iOS 学习笔记(六)—— 随机数发生器

OpenCV for iOS 学习笔记(六)—— 随机数发生器

作者: FLNuo | 来源:发表于2016-10-20 11:53 被阅读104次


  • 随机发生器 (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中如何调用


    图中代码都在`viewDidLoad`中实现
  • 效果图

RNG随机数发成器绘制多条弧线结果

相关文章

网友评论

    本文标题:OpenCV for iOS 学习笔记(六)—— 随机数发生器

    本文链接:https://www.haomeiwen.com/subject/zmsfuttx.html