2016-09-07 97 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

我需要類似的東西。我非常快速地爲RGB的每個值嘗試105*Rand() + 150,並且它似乎工作得很好。這會給你150和255之間的值,即較淺的顏色。這不是在C++中,但我使用的軟件爲Rand()創建了0到1的值。