我正在使用cX = round(centers(n_c,1));
cY = round(centers(n_c,2));
来定义我使用Scalar
绘制的矩形的颜色:
OpenCV
但是,颜色是在HSV颜色空间而不是RGB中定义的(rectangle(imgOriginal, Point(0, 0), Point(25, 50), Scalar(H, S, V), CV_FILLED);
是RGB)。
如何将imgOriginal
(或其输入,整数变量Scalar
,H
和S
)转换为RGB?
(到目前为止,我只找到了答案,告诉我如何用V
转换整个图像,这不是我想要的。)
答案 0 :(得分:5)
虽然不是最佳,但您可以使用以下内容:
{{1}}
答案 1 :(得分:2)
这对我有用,
Mat rgb;
Mat hsv(1, 1, CV_8UC3, Scalar(224, 224, 160));
cvtColor(hsv, rgb, CV_HSV2BGR);
Scalar rgb = Scalar((int)rgb.at<cv::Vec3b>(0, 0)[0],(int)rgb.at<cv::Vec3b>(0, 0)[0],(int)rgb.at<cv::Vec3b>(0, 0)[0])
答案 2 :(得分:1)
使用它来转换单个值:
cv::Vec3f rgb;
cv::Vec3f hsv;
hsv[0] = H;
hsv[1] = S;
hsv[2] = V;
cvtColor(hsv, rgb, CV_HSV2BGR);
然后你可以使用它:
rectangle(imgOriginal, Point(0, 0), Point(25, 50),
Scalar(rgb[0], rgb[1], rgb[2]), CV_FILLED);
答案 3 :(得分:0)
OpenCV 3.2.0。注意:h在[0,360]范围内,l和s在[0,1]
中 Mat hls(1, 1, CV_32FC3, Scalar(h, l, s));
Mat rgb;
cvtColor(hls, rgb, COLOR_HLS2RGB);
Scalar c = Scalar(255*rgb.at<float>(0,0), 255*rgb.at<float>(0,1), 255*rgb.at<float>(0,2));