Just a Computer Graphics Studio & My Life

在瞭解OpenCV如何產生亂數之後,接下來實做產生亂數影像 (Generate Random Number for Image)
OpenCV中提供兩種隨機亂數分佈:常態分佈(Normal Distribution)均勻分佈(Uniform Distribution),來看看產生的影像有何差異。

程式碼

/**
	Theme: Generate Random Number for Image
	Compiler: Dev C++ 4.9.9.2
	Library: OpenCV 2.0
	Date: 101/10/21
	Author: HappyMan
	Blog: https://cg2010studio.wordpress.com/
*/
#include <cv.h>
#include <highgui.h>
int main()
{
    IplImage *Image1, *Image2;
    CvSize ImageSize1 = cvSize(500,500);
    Image1 = cvCreateImage(ImageSize1,IPL_DEPTH_8U,3);
    cvZero(Image1);
    Image2 = cvCloneImage(Image1);

    CvRNG rng = cvRNG(cvGetTickCount());

    int RandType1 = CV_RAND_UNI;
    int RandType2 = CV_RAND_NORMAL;

    CvScalar UniformLowBound = cvScalar(0,0,0,0);
    CvScalar UniformUpBound = cvScalar(255,255,255,0);
    cvRandArr(&rng,Image1,RandType1,UniformLowBound,UniformUpBound);

    CvScalar NormalMean = cvScalar(127,127,127,0);
    CvScalar NormalStandard = cvScalar(32,32,32,0);
    cvRandArr(&rng,Image2,RandType2,NormalMean,NormalStandard);

    cvNamedWindow("Random Uniform Distribution",1);
    cvShowImage("Random Uniform Distribution",Image1);
    cvNamedWindow("Random Normal Distribution",1);
    cvShowImage("Random Normal Distribution",Image2);
    cvWaitKey(0);
}

執行結果

這兩個影像看起來相當有趣,很像類比電視沒有訊號時的狀況。

函式用法

cvRandArr(CvRNG資料結構,IplImage或CvMat資料結構,均勻分佈參數,隨機範圍下限,隨機範圍上限)
cvRandArr(CvRNG資料結構,IplImage或CvMat資料結構,常態分佈參數,平均數,標準差)
矩陣(CvMat)或圖形(IplImage)隨機產生顏色。

參考:OpenCV隨機的實作-隨機分佈的種類、WiKi – Uniform distribution (continuous)、WiKi – Uniform distribution (discrete)、WiKi – Normal distribution

Advertisements

Comments on: "[OpenCV] 產生亂數影像 (Generate Random Number for Image)" (1)

  1. […] 均勻分佈參數和常態分佈參數可參考:產生亂數影像 (Generate Random Number for Image)。 […]

    喜歡

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: