解答例
#include <iostream>
#include <opencv2\opencv.hpp>
int main() {
cv::Mat hsv_img, hsv_img1, dst_img;
cv::Mat hue_img, sat_img, value_img;
cv::Mat img = cv::imread("lenna_inpaint_ns.png"); //カラー画像を取得
if (!img.data) return -1; //画像の取得に失敗した場合は、プログラムを終了させる
cv::cvtColor(img, hsv_img, cv::COLOR_BGR2HSV); //RGB画像をHSV変換 cv::COLOR_BGR2HSV ("40"でもOK) (旧 cv::CV_BGR2HSV)
cv::Mat channels[3];
cv::split(hsv_img, channels); //H, S, Vの各チャンネルに分ける
hue_img = channels[0]; //H 色相
sat_img = channels[1]; //S 彩度
value_img = channels[2]; //V 明度
hue_img = 22; //OpenCVでは色相 0-180
sat_img = 90; //OpenCVでは彩度 0-255
merge(channels, 3, hsv_img1); //H, S, Vの各チャンネルをマージ
//cv::cvtColor(hsv_img1, dst_img, 54); //RGB画像をHSV変換 cv::CV_HSV2BGR
cv::cvtColor(hsv_img1, dst_img, cv::COLOR_HSV2BGR); //HSV画像をBGR変換 cv::COLOR_HSV2BGR ("54"でもOK) (旧 cv::CV_HSV2BGR)
cv::imshow("Original image", img); //元画像の表示
cv::imshow("Show image", dst_img); //セピア画像の表示
cv::waitKey(0); //任意のキーが押されたら表示を終了
return 0;
}
参考