生成随机的柔和颜色

问题描述:

我试图生成随机柔和的颜色。生成随机的柔和颜色

说柔和的颜色具有较低的值/强度值(HS V)是否正确?因此,像这样的东西应该会产生随机柔和的颜色:Vec3b randPastel = Vec3b(rng.uniform(0, 180), rng.uniform(0, 255), rng.uniform(0, 50))

我目前的功能失败。由于某种原因,它只产生黑色BGR颜色:

Vec3b randPastelBGR() 
{ 
    Mat hsv(1, 1, CV_8UC3); 
    cvtColor(hsv, hsv, CV_BGR2HSV); 
    hsv.at<Vec3b>(0, 0) = Vec3b(rng.uniform(0, 180), rng.uniform(0, 255), rng.uniform(0, 50)); 
    cvtColor(hsv, hsv, CV_HSV2BGR); 
    return hsv.at<Vec3b>(0, 0); 
} 
+0

请一次只问一个问题,并且只有在以前没有问过。我删除了[重复部分](http://*.com/questions/32373527/converting-hsv-to-rgb-in-opencv) – MSalters

蜡笔大多是白色的,即它们具有低饱和度。不是零,因为那将是完全白色(或灰色)。正如你注意到的,低价值你会得到深色。你想要一个相当高的价值,甚至可能不需要一个随机的。 (究竟哪个颜色部分必须是随机的,为什么?)

我需要类似的东西。我非常快速地为RGB的每个值尝试105*Rand() + 150,并且它似乎工作得很好。这会给你150和255之间的值,即较浅的颜色。这不是在C++中,但我使用的软件为Rand()创建了0到1的值。