如何使用C ++绘制HSV值

时间:2013-04-22 02:50:28

标签: language-agnostic mfc rgb hsv

我对这些事情都很陌生,我已经用C ++实现了一个代码来从RGB值中找到HSV值。

R = 255;
G = 0;
B = 0;

为此我得到HSV的值为:

H = 0;
S = 1;
V = 1;

不,我在这里V= 255VS = 255SH = H/2。我得到了正确的hsv值,但我不知道如何在24位位图图像中绘制它们。我搜索了互联网,但可以找到机器人。有人可以帮帮我吗? Thankx

1 个答案:

答案 0 :(得分:1)

大多数图像格式(包括位图)以RGB格式(或BGR格式,取决于endianness)存储值。对于24位位图,红色使用8位,绿色使用8位,蓝色使用8位,因此如果要以此格式存储图像,则必须使用RGB(或保存前转换为RGB),以使图像正确着色。

现在,如果你不关心图像是如何出现的,只是想在图像的R,G和B通道中存储H,S和V分量,你可以轻松地这样做(只需缩放chanels)达到理想的范围)。因此对于24位位图,每个通道8位意味着通道的值介于0和255之间。假设H,S和V在0到1的范围内,则将每个乘以255以将它们放在该范围内

以下是分别存储在图像的R,G和B通道中的Stack Overflow徽标的H,S和V值。

HSV in RGB channels example