生成随机柔和的颜色

Generate random Pastel colour

本文关键字:和的 颜色 随机      更新时间:2023-10-16

我正在尝试生成一个随机的柔和的颜色。

说柔和的颜色有一个低值/强度值(HSV)是正确的吗?因此,像这样的代码应该生成随机的柔和颜色: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);
}

粉彩大多为白色,即饱和度较低。但不是零,因为那将完全是白色(或灰色)。正如你所注意到的,低值会得到深色。你想要一个相当高的值,甚至可能不想要一个随机值。(确切地说,哪些颜色部分必须是随机的,为什么?)

我需要一些类似的东西。我只是很快地尝试了105*Rand() + 150为RGB的每个值,它似乎工作得很好。这将为您提供150到255之间的值,即较浅的颜色。这不是在c++中,但我使用的软件使Rand()的值为0到1。