RGB转HSV - RGB2HSV
函数简介
将RGB颜色值转换为HSV颜色格式。此函数可以将RGB颜色空间的三个分量(红、绿、蓝)转换为HSV颜色空间的表示形式。HSV颜色空间更适合进行颜色分析和处理,适用于颜色识别、图像处理等场景。返回格式(H,S,V)
接口名称
RGB2HSV
DLL调用
long RGB2HSV(long instance, int r, int g, int b)
参数说明
参数名 | 类型 | 说明 |
---|---|---|
instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
r | 整数型 | 红色分量值,范围0-255 |
g | 整数型 | 绿色分量值,范围0-255 |
b | 整数型 | 蓝色分量值,范围0-255 |
示例
// 基本颜色转换
long hsvRed = RGB2HSV(ola, 255, 0, 0);
if (hsvRed != 0) {
char* hsvStr = (char*)hsvRed;
printf("红色HSV值: %s\n", hsvStr);
free(hsvStr);
}
// 绿色转换
long hsvGreen = RGB2HSV(ola, 0, 255, 0);
if (hsvGreen != 0) {
char* hsvStr = (char*)hsvGreen;
printf("绿色HSV值: %s\n", hsvStr);
free(hsvStr);
}
// 蓝色转换
long hsvBlue = RGB2HSV(ola, 0, 0, 255);
if (hsvBlue != 0) {
char* hsvStr = (char*)hsvBlue;
printf("蓝色HSV值: %s\n", hsvStr);
free(hsvStr);
}
// 黄色转换
long hsvYellow = RGB2HSV(ola, 255, 255, 0);
if (hsvYellow != 0) {
char* hsvStr = (char*)hsvYellow;
printf("黄色HSV值: %s\n", hsvStr);
free(hsvStr);
}
// 常见颜色转换示例
int colors[][3] = {
{255, 0, 0}, // 红色
{0, 255, 0}, // 绿色
{0, 0, 255}, // 蓝色
{255, 255, 0}, // 黄色
{255, 0, 255}, // 洋红
{0, 255, 255}, // 青色
{255, 255, 255}, // 白色
{0, 0, 0} // 黑色
};
char* colorNames[] = {"红色", "绿色", "蓝色", "黄色", "洋红", "青色", "白色", "黑色"};
for (int i = 0; i < 8; i++) {
long hsvColor = RGB2HSV(ola, colors[i][0], colors[i][1], colors[i][2]);
if (hsvColor != 0) {
char* hsvStr = (char*)hsvColor;
printf("%s (%d,%d,%d) -> HSV: %s\n", colorNames[i], colors[i][0], colors[i][1], colors[i][2], hsvStr);
free(hsvStr);
}
}
// 与Hex2HSV函数对比
long hsvFromRGB = RGB2HSV(ola, 255, 0, 0);
long hsvFromHex = Hex2HSV(ola, "#FF0000");
if (hsvFromRGB != 0 && hsvFromHex != 0) {
char* rgbStr = (char*)hsvFromRGB;
char* hexStr = (char*)hsvFromHex;
printf("RGB2HSV结果: %s\n", rgbStr);
printf("Hex2HSV结果: %s\n", hexStr);
free(rgbStr);
free(hexStr);
}
// 颜色范围转换示例
for (int r = 0; r <= 255; r += 64) {
for (int g = 0; g <= 255; g += 64) {
for (int b = 0; b <= 255; b += 64) {
long hsvColor = RGB2HSV(ola, r, g, b);
if (hsvColor != 0) {
char* hsvStr = (char*)hsvColor;
printf("RGB(%d,%d,%d) -> HSV: %s\n", r, g, b, hsvStr);
free(hsvStr);
}
}
}
}
返回值
int64_t: 返回HSV颜色字符串指针,需要手动释放内存
注意事项
- RGB分量值范围均为0-255
- 返回的HSV字符串需要手动释放内存
- HSV颜色空间更适合进行颜色分析和处理
- 与 Hex2HSV 函数功能相同,但输入格式不同
- 适用于颜色识别、图像处理、颜色分析等场景
- HSV格式便于进行颜色范围匹配和颜色过滤
- 建议在颜色处理流程中使用HSV颜色空间
- RGB到HSV的转换是标准的颜色空间转换算法