一个简单的随机色生成器
可以放便的生成随机色和指定范围内的随机色(随机渐变色).
main.cpp
// main.cpp : 定义控制台应用程序的入口点。
// cvcore 2.4.8
#include "stdafx.h"
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#include <iostream>
using namespace std;
#include "cColorRandomMaker.class.h"
#include <windows.h>
#include <time.h>
int _tmain(int argc, _TCHAR* argv[])
{
colorRandomMaker *rcg = new colorRandomMaker(_time64(nullptr));
// 颜色A和颜色B
float colora[3] = { 0.1f, 0.2f, 0.5f };
float colorb[3] = { 0.9f, 0.3f, 0.7f };
float colorr[3] = { 0.f };
IplImage *img = cvCreateImage(cvSize(800, 100), 8, 3);
memset(img->imageData, 0, 500 * 100 * 3);
// 从颜色A到B的渐变色
for (int col = 0; col < img->width; col+=4)
{
CvScalar color = cvScalar(
((double)col / img->width * (colorb[0] - colora[0]) + colora[0]) * 255,
((double)col / img->width * (colorb[1] - colora[1]) + colora[1]) * 255,
((double)col / img->width * (colorb[2] - colora[2]) + colora[2]) * 255
);
cvLine(img, cvPoint(col, 0), cvPoint(col, 100), color, 4);
}
cvShowImage("渐变色", img);
// 随机色(每个像素都是随机的颜色)
for (int col = 0; col < img->width; col+=4)
{
CvScalar color = cvScalar(
rcg->randomInRange(0.f, 1.f) * 255.0,
rcg->randomInRange(0.f, 1.f) * 255.0,
rcg->randomInRange(0.f, 1.f) * 255.0
);
cvLine(img, cvPoint(col, 0), cvPoint(col, 100), color, 4);
}
cvShowImage("随机色", img);
// 介于颜色A和颜色B之间的随机渐变色
for (int col = 0; col < img->width; col +=