获取前景点 - GetForegroundPoints
函数简介
获取二值化图像中的前景点坐标信息。此函数可以检测图像中的前景对象,并返回所有前景点的坐标信息,以JSON格式返回。适用于图像分割、目标检测、轮廓分析等场景。
接口名称
GetForegroundPoints
DLL调用
long GetForegroundPoints(long instance, long ptr)
参数说明
参数名 | 类型 | 说明 |
---|---|---|
instance | 长整数型 | OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。 |
ptr | 长整数型 | 图像指针,由图像处理函数返回 |
示例
// 获取图像前景点
long image = LoadImage(ola, "D:\\test\\image.png");
if (image != 0) {
long pointsPtr = GetForegroundPoints(ola, image);
if (pointsPtr != 0) {
// 获取JSON字符串
char* jsonStr = (char*)pointsPtr;
printf("前景点JSON: %s\n", jsonStr);
// 解析JSON格式的前景点坐标
// 格式: [{"x":10,"y":10},{"x":20,"y":20}]
// 释放内存
free(pointsPtr);
}
FreeImagePtr(ola, image);
}
// 获取二值化图像的前景点
long screen = GetScreenDataPtr(ola, 0, 0, 1920, 1080);
if (screen != 0) {
// 先进行二值化处理
long thresholded = Threshold(ola, screen, 128.0, 255.0, 0);
if (thresholded != 0) {
long pointsPtr = GetForegroundPoints(ola, thresholded);
if (pointsPtr != 0) {
printf("前景点数量: %s\n", (char*)pointsPtr);
free(pointsPtr);
}
FreeImagePtr(ola, thresholded);
}
FreeImagePtr(ola, screen);
}
// 结合其他图像处理函数使用
long image = LoadImage(ola, "D:\\test\\target.png");
if (image != 0) {
// 转换为灰度图
long grayImage = ConvertColor(ola, image, 0);
if (grayImage != 0) {
// 阈值化
long binaryImage = Threshold(ola, grayImage, 128.0, 255.0, 0);
if (binaryImage != 0) {
// 获取前景点
long pointsPtr = GetForegroundPoints(ola, binaryImage);
if (pointsPtr != 0) {
printf("处理后的前景点: %s\n", (char*)pointsPtr);
free(pointsPtr);
}
FreeImagePtr(ola, binaryImage);
}
FreeImagePtr(ola, grayImage);
}
FreeImagePtr(ola, image);
}
返回值
long: 返回前景点数组的JSON字符串指针,格式为 [{"x":10,"y":10},{"x":20,"y":20}]
注意事项
- 返回的JSON字符串需要手动释放内存
- 前景点检测基于图像的非零像素
- 适用于二值化图像或经过预处理的图像
- 返回的坐标基于图像坐标系,原点在左上角
- 建议与 Threshold 函数配合使用
- JSON格式便于后续处理和解析
- 适用于目标检测、轮廓分析、图像分割等应用场景