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



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

    • 通過隨機(jī)發(fā)生器(RNG)生成得到均勻分布的隨機(jī)數(shù)。
  • 在這里會用到OpenCV基本繪圖的知識

  • 代碼與解析(以畫弧線為示例)

  • 首先生成一個 Random Number Generator 對象(RNG):
    // 用數(shù)值 0xFFFFFFFF 來實例化的一個RNG對象
    RNG rng( 0xFFFFFFFF );
  • 創(chuàng)建一個0矩陣(空圖像),并且指定它的寬度,高度,和像素格式 :
    // 初始化一個0矩陣 w 是定義的全局 double 常量(圖像像素寬高)
    Mat image = Mat::zeros( w, w, CV_8UC3 );
  • 調(diào)用畫弧線的方法 :
    drawingRandomEllipses(imag, rng);
  • drawingRandomEllipses 方法實現(xiàn) :
    注意 :這里rng.uniform(n, m);是表示集合[n, m) 即 :
    n <= rng.uniform(n, m) < m
    void drawingRandomEllipses(Mat& image, RNG rng) {
    // 這個是線型
    int ellipses_lineType = 8;
    // 創(chuàng)建 像素點 這個用來存儲 弧線的中心位置
    cv::Point point;
    // 這個用來存儲弧線的長軸和短軸的大小
    cv::Size size;
    // 這里的 number 是全局 int 常量,表示繪制 number 條弧線
    for (int i = 0; i < number; i++) {
    // 隨機(jī)生成的弧線中點 (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);
    // 畫弧
    ellipse(image, // 將弧線載入圖像 image
                        point,               // 弧線中點
                        size,                // 弧線長短軸
                        rng.uniform(0, 360), // 圓弧偏移角度,使用 RNG 隨機(jī)生成
                        rng.uniform(0, 360), // 圓弧的開始角度,使用 RNG 隨機(jī)生成
                        rng.uniform(0, 360), // 圓弧的結(jié)束角度,使用 RNG 隨機(jī)生成
                        randomColor(rng),    // randomColor 自定義函數(shù)(下面會提供)
                        rng.uniform(1, 10),  // 圓弧的線條粗細(xì),使用 RNG 隨機(jī)生成
                        ellipses_lineType);  // 線型
        }
    }
  • ?randomColor 函數(shù)的實現(xiàn) :
    // 該函數(shù)返回 Scalar 類型,線條的顏色 (R, G, B)
    static Scalar randomColor( RNG& rng ) {
    int icolor = (unsigned) rng;
    return Scalar( icolor&255, (icolor>>8)&255, (icolor>>16)&255 );
    }
  • xCode中如何調(diào)用


    圖中代碼都在`viewDidLoad`中實現(xiàn)
  • 效果圖

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

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

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