[Visual C++]Rainbow RGB gradient




아래의 소스는 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;
}