OpenCV 第8課隨機畫圖與OpenCV文本

例子很簡單吶就是讓它畫很多圖,分配不同的顏色,下面我們來看看吧;

例子比較簡單,這裏只是簡單記錄一下,話不多說,上例子吧:

// opencv00008.cpp : 定義控制檯應用程序的入口點。
//

#include "stdafx.h"
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

static const char WINTITLE[] = "randomlines-demo";


int drawRandomLines(Mat image)
{
	RNG rng(0xffffffff); //初始化
	Point pt1, pt2;
	for (int i = 0; i< 100000;i++)
	{
		pt1.x = rng.uniform(0, image.cols);
		pt2.x = rng.uniform(0, image.cols);
		pt1.y = rng.uniform(0, image.rows);
		pt2.y = rng.uniform(0, image.rows);
		int r = rng.uniform(0, 255);
		int g = rng.uniform(0, 255);
		int b = rng.uniform(0, 255);
		line(image, pt1, pt2, Scalar(b,g,r),1,8); //畫線
		putText(image, "lcy  lcy", Point(image.cols / 2 - 80, image.rows / 2),
			CV_FONT_HERSHEY_PLAIN, 2.0, Scalar(b, g, r), 4, 8);
		imshow(WINTITLE, image);
		if (waitKey(10) >= 0)
		{
			return -1;
		}
	}
}
int main()
{
	Mat image = Mat::zeros(Size(450, 450), CV_8UC3);
	namedWindow(WINTITLE, CV_WINDOW_AUTOSIZE);
	int ok = drawRandomLines(image);
	if (ok != 0) {
		return 0;
	}
    return 0;
}

  RNG實現一個隨機數生成器。在本例中,rng是以0xFFFFFFFF值初始化的RNG元素。

  • 我們知道rng是一個隨機數生成器對象。在上面的代碼中,我們調用rng.uniform(a,b)。這產生了值a和b之間的隨機均勻分佈(包括在a中,排除在b中)。
  • 從上面的解釋,我們推導出極值pt1和pt2將是隨機值,所以線位置將是非常不可預測的,給出一個很好的視覺效果(查看下面的結果部分)。

然後就是這個了。簡單明瞭,還無聊。

喜歡本文章的歡迎關注我的博客,一起記錄成長的過程。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章