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