opencv产生随机的颜色
//将HSV颜色空间值转换成RGB值,参考这里
cv::Scalar HSV2RGB(const float h, const float s, const float v) {
const int h_i = static_cast<int>(h * );
const float f = h * - h_i;
const float p = v * ( - s);
const float q = v * ( - f*s);
const float t = v * ( - ( - f) * s);
float r, g, b;
switch (h_i) {
case :
r = v; g = t; b = p;
break;
case :
r = q; g = v; b = p;
break;
case :
r = p; g = v; b = t;
break;
case :
r = p; g = q; b = v;
break;
case :
r = t; g = p; b = v;
break;
case :
r = v; g = p; b = q;
break;
default:
r = ; g = ; b = ;
break;
}
return cv::Scalar(r * , g * , b * );
}
//固定s和v值,改变h值,并通过黄金分割得到随机均匀的h值,从而得到较理想的随机颜色
vector<cv::Scalar> GetColors(const int n) {
vector<cv::Scalar> colors;
cv::RNG rng();
const float golden_ratio_conjugate = 0.618033988749895;
const float s = 0.3;
const float v = 0.99;
for (int i = ; i < n; ++i) {
const float h = std::fmod(rng.uniform(.f, .f) + golden_ratio_conjugate,
.f);//始终返回(0,1)区间的小数,取余fmod(a,b)=a-n*b(n为最大整除得到的整数商)商的符号取决于a
colors.push_back(HSV2RGB(h, s, v));
}
return colors;
}
RNG rng(12345)
随机数生成器RNG,计算机的伪随机数是由随机种子根据一定的计算方法计算出来的数值,所以只要计算方法一定,随机种子一定,那么产生的随机数就是固定的。opencv 里RNG类构造函数初始化为固定值后,随机种子也是固定的,所以在同一个平台上,编译后每次运行它,显示的随机数是一样的,上面的代码运行后产生的随机颜色都是一样的,是不是顿时有种“随机也非随机”的感觉。也就是说如果我们在目标检测上可以为相同的类标记为同一个颜色,而且不管运行多少次,都会保留初始化的随机颜色序列。
opencv产生随机的颜色的更多相关文章
- css颜色值设置方式有哪些?以及如何随机一个颜色?
网页中颜色的使用方式有一下几种 1.颜色名称 ,如red black white 2.十六进制颜色,网页中常用,每两位代表红绿蓝的值的比例, 如 #ffffff白色 #000000黑色 3.r ...
- js随机背景颜色
// 要求: 随机生成颜色RGB 核心点 :(0,0,0) rgb 每一组的数字取值范围是 0~255 // 需要随机生成 0~255 之间的整数 function getRandom(min, ma ...
- ios开发之--随机背景颜色
记录个随机背景颜色的方法: + (UIColor*) randomColor{ NSInteger r = arc4random() % ; NSInteger g = arc4random() % ...
- JavaScript随机生成颜色以及十六进制颜色 与RGB颜色值的相互转换
/** * 随机生成颜色 * @return 随机生成的十六进制颜色 */ function randomColor(){ var colorStr=Math.floor(Math.random()* ...
- JS---Math.Random()*10--[0,10)随机变颜色
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- js点击按钮为元素随机字体颜色和背景色
文章地址 https://www.cnblogs.com/sandraryan/ 写两个button和一个div,点击按钮分别改变背景色和前景色(字体颜色).产生的是一个随机颜色. <!DOCT ...
- JS实现鼠标移入DIV随机变换颜色
今天分享一个在 JavaScript中,实现一个鼠标移入可以随机变换颜色,本质就是js的随机数运用. 代码如下: <!DOCTYPE html> <html> <head ...
- 用cv::Scalar来设置opencv中图片的颜色
1 怎样使用cv::Scalar来设置opencv中的颜色 cv::Scalar的构造函数是cv::Scalar(v1, v2, v3, v4),前面的三个参数是依次设置BGR的,和RGB相反,第四个 ...
- 点击DIV随机换颜色
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
随机推荐
- 佣金维护测试sql
SELECT bmc.memberid , case then decode(bmc.source, , , 'TOPfitIBL') ELSE decode(bmc.source, , , 'TOP ...
- C# 键盘记录器
设计背景 Win系统带有API可以获取键入值,本小程序主要应用了一个网上广为流传的类,可以说一个测试DEMO.有俗称为键盘钩子 设计思路 使用Win API获取建入值 相关技术 Win API 功能 ...
- .net MVC4 来一个简单的分页代码
action VodeEntities db = new NewVode.Models.VodeEntities(); ; ) { var sql = "select * ,row_numb ...
- Java 继承和多态
Java 继承和多态 Java 继承 继承的概念 继承是java面向对象编程技术的一块基石,因 ...
- 虚拟主机、ECS云服务器、VPS区别汇总
想做一个网站,但是在各种类型的服务器琳琅满目,现在总结一下市场上常见的几种服务器. 1.虚拟主机 虚拟主机就是利用虚拟化的技术,将一台服务器划分出一定大小的空间,每个空间都给予单独的 FTP 权限和 ...
- [bzoj1875][SDOI2009] HH去散步 [dp+矩阵快速幂]
题面 传送门 正文 其实就是让你求有多少条长度为t的路径,但是有一个特殊条件:不能走过一条边以后又立刻反着走一次(如果两次经过同意条边中间隔了别的边是可以的) 如果没有这个特殊条件,我们很容易想到dp ...
- Linux使用技巧(一):vim中选中多行、复制和粘贴
一.选中多行: 使用命令vim打开文件,移动光标至所选行的开头,按v进入视图,键盘上按向下键,选中所需行即可. 二.复制与粘贴 三种方法: 1)在上文第一部分的基础上,按y,然后移动光标至所需粘贴处, ...
- 【BZOJ3309】DZY Loves Math 解题报告
[BZOJ3309]DZY Loves Math Description 对于正整数\(n\),定义\(f(n)\)为\(n\)所含质因子的最大幂指数.例如\(f(1960)=f(2^3×5^1×7^ ...
- google插件备份与安装
说明 chrome浏览器中有很多有用的扩展程序, 但是可能因为某些原因我们不能直接去扩展程序商店进行下载获取, 如果我们自己电脑上已经通过某种方式添加了扩展程序, 想把它移植到其他没有FQ或者压根没有 ...
- Luogu 1220 关路灯(动态规划)
Luogu 1220 关路灯(动态规划) Description 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项 ...