아래의 소스는 HSL 색상 모델을 이용해 Rainbow 색상을 찍어내는 코드이다.
#include <shlwapi.h>
#pragma comment( lib, "shlwapi.lib" ) // needed for the ColorHLSToRGB() function
int hue, lum, sat;
lum = 120;
sat = 240;
for (hue=0; hue<240; ++hue){
COLORREF rgbColor = ::ColorHLSToRGB( hue, lum, sat );
}
http://forums.codeguru.com/showthread.php?421211-Rainbow-RGB-gradient
아래 소스와 결과를 비교해보면 HSL 색 모델에 대해 더 이해가 잘 될 것이다.
#include<opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include<vector>
#include <shlwapi.h>
#pragma comment( lib, "shlwapi.lib" ) // needed for the ColorHLSToRGB() function
int main() {
int hue, lum, sat;
sat = 240;
cv::Mat img(sat,240, CV_8UC3);
for (lum = 0; lum < 240; lum++){
for (hue = 0; hue < sat; ++hue){
COLORREF color = ::ColorHLSToRGB(hue, lum, sat);
int r = GetRValue(color);
int g = GetGValue(color);
int b = GetBValue(color);
img.at<cv::Vec3b>(hue,lum) = cv::Vec3b(b, g, r);
}
}
cv::imshow("img", img);
cv::waitKey();
return EXIT_SUCCESS;
}