2016-09-07 2 views
0

Я пытаюсь создать случайный пастельный цвет.Создать случайный цвет пастель

Правильно ли говорить, что пастельный цвет имеет значение с низкой величиной/интенсивностью (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://stackoverflow.com/questions/32373527/converting-hsv-to-rgb-in-opencv) – MSalters

ответ

1

пастель в основном белого цвета, то есть они имеют низкую насыщенность. Но не нулевой, потому что это будет полностью белый (или серый). Как вы заметили, с низким значением вы получаете темные цвета. Вы хотите довольно высокое значение, и даже не можете получить случайный вариант. (Точно, какие цветовые части должны быть случайными и почему?)

0

Мне нужно было что-то подобное. Я просто очень быстро попробовал 105*Rand() + 150 за каждое значение RGB, и, похоже, он работал очень хорошо. Это даст вам значения от 150 до 255, то есть более светлые цвета. Это было не в C++, но используемое мной программное обеспечение делает значения от 0 до 1 для Rand().

Смежные вопросы