转换颜色格式 - ConvertColor
函数简介
转换图像的颜色格式。此函数支持多种颜色格式转换,包括灰度转换、BGRA转RGBA、BGRA转BGR、BGRA转HSVA、BGRA转HSV等。适用于图像预处理、颜色空间转换等场景。
接口名称
ConvertColor
DLL调用
long ConvertColor(long instance, long ptr, int type)
参数说明
参数名 | 类型 | 说明 |
---|---|---|
instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
ptr | 长整数型 | 图像指针,由图像处理函数返回 |
type | 整数型 | 转换类型: 0: 转为灰度 1: BGRA转RGBA 2: BGRA转BGR 3: BGRA转HSVA 4: BGRA转HSV |
示例
// 加载图像并转换为灰度
long image = LoadImage(ola, "D:\\test\\color.png");
if (image != 0) {
// 转换为灰度图
long grayImage = ConvertColor(ola, image, 0);
if (grayImage != 0) {
printf("图像已转换为灰度格式\n");
ShowImage(ola, grayImage);
FreeImagePtr(ola, grayImage);
}
FreeImagePtr(ola, image);
}
// BGRA转RGBA格式
long image = LoadImage(ola, "D:\\test\\bgra.png");
if (image != 0) {
// BGRA转RGBA
long rgbaImage = ConvertColor(ola, image, 1);
if (rgbaImage != 0) {
printf("BGRA已转换为RGBA格式\n");
FreeImagePtr(ola, rgbaImage);
}
FreeImagePtr(ola, image);
}
// BGRA转BGR格式
long image = LoadImage(ola, "D:\\test\\bgra.png");
if (image != 0) {
// BGRA转BGR
long bgrImage = ConvertColor(ola, image, 2);
if (bgrImage != 0) {
printf("BGRA已转换为BGR格式\n");
FreeImagePtr(ola, bgrImage);
}
FreeImagePtr(ola, image);
}
// BGRA转HSVA格式
long image = LoadImage(ola, "D:\\test\\color.png");
if (image != 0) {
// BGRA转HSVA
long hsvaImage = ConvertColor(ola, image, 3);
if (hsvaImage != 0) {
printf("BGRA已转换为HSVA格式\n");
FreeImagePtr(ola, hsvaImage);
}
FreeImagePtr(ola, image);
}
// BGRA转HSV格式
long image = LoadImage(ola, "D:\\test\\color.png");
if (image != 0) {
// BGRA转HSV
long hsvImage = ConvertColor(ola, image, 4);
if (hsvImage != 0) {
printf("BGRA已转换为HSV格式\n");
FreeImagePtr(ola, hsvImage);
}
FreeImagePtr(ola, image);
}
// 图像处理流程示例
long screen = GetScreenDataPtr(ola, 0, 0, 1920, 1080);
if (screen != 0) {
// 转换为灰度
long grayScreen = ConvertColor(ola, screen, 0);
if (grayScreen != 0) {
// 进行阈值化处理
long binaryScreen = Threshold(ola, grayScreen, 128.0, 255.0, 0);
if (binaryScreen != 0) {
printf("屏幕截图已处理为二值图像\n");
FreeImagePtr(ola, binaryScreen);
}
FreeImagePtr(ola, grayScreen);
}
FreeImagePtr(ola, screen);
}
返回值
int64_t: 返回转换后的图像指针
注意事项
- 转换类型说明:
- 0: 转为灰度 - 适用于图像预处理、特征提取
- 1: BGRA转RGBA - 适用于OpenGL等图形库
- 2: BGRA转BGR - 适用于OpenCV等计算机视觉库
- 3: BGRA转HSVA - 适用于颜色分析、图像分割
- 4: BGRA转HSV - 适用于颜色识别、图像处理
- 转换后的图像需要手动释放内存
- 灰度转换会丢失颜色信息,但保留亮度信息
- HSV颜色空间更适合进行颜色分析和处理
- 建议在图像处理流程中合理使用颜色转换
- 与 Threshold 函数配合使用效果更佳