OpenCV:将Scalar转换为不同的颜色空间

fue*_*zig 6 c++ opencv color-space

我用a Scalar来定义我正在绘制的矩形的颜色OpenCV:

rectangle(imgOriginal, Point(0, 0), Point(25, 50), Scalar(H, S, V), CV_FILLED);
Run Code Online (Sandbox Code Playgroud)

但是,颜色是在HSV颜色空间而不是RGB(imgOriginalRGB)中定义的.

如何转换Scalar(或它的输入,整数变量H,SV)为RGB?

(到目前为止,我只找到了答案,告诉我如何转换整个图像,cvtColor而不是我想要的.)

Mor*_*ken 5

虽然不是最佳,但您可以使用以下内容:

Scalar ScalarHSV2BGR(uchar H, uchar S, uchar V) {
    Mat rgb;
    Mat hsv(1,1, CV_8UC3, Scalar(H,S,V));
    cvtColor(hsv, rgb, CV_HSV2BGR);
    return Scalar(rgb.data[0], rgb.data[1], rgb.data[2]);
}
Run Code Online (Sandbox Code Playgroud)


Ram*_*ama -1

使用它来转换单个值:

cv::Vec3f rgb;
cv::Vec3f hsv;
hsv[0] = H;
hsv[1] = S;
hsv[2] = V;
cvtColor(hsv, rgb, CV_HSV2BGR);
Run Code Online (Sandbox Code Playgroud)

然后你就可以使用它:

rectangle(imgOriginal, Point(0, 0), Point(25, 50), 
    Scalar(rgb[0], rgb[1], rgb[2]), CV_FILLED);
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,但这仍然给出了相同的例外......? (2认同)