-
環(huán)境配置 :OpenCV在xCode中的安裝與環(huán)境配置
-
隨機(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é)果
-
參考資料 :隨機(jī)數(shù)發(fā)生器
