API:Python SDK

Chloros Python SDK 提供了对 Chloros 图像处理引擎的编程访问,支持自动化、自定义工作流,并可与您的 Python 应用程序及研究流程无缝集成。

主要功能

  • 🐍 原生 Python - 简洁、符合 Python 风格的 API 图像处理

  • 🔧 全面访问 API - 对 Chloros 处理拥有完全控制权

  • 🚀 自动化 - 构建自定义批处理工作流

  • 🔗 集成 - 将 Chloros 嵌入现有 Python 应用程序

  • 📊 科研就绪 - 非常适合科学分析流程

  • 并行处理 - 根据您的 CPU 核心数进行扩展 (Chloros+)

系统要求

要求
详细信息

已安装 Chloros

Windows:桌面安装程序; Linux:.deb 软件包

许可证

操作系统

Windows 10/11 (64 位), Linux x86_64 (amd64), Linux arm64 (NVIDIA Jetson JetPack 6)

Python

Python 3.7 或更高版本

内存

至少 8GB RAM(建议 16GB)

互联网

许可证激活所需

circle-exclamation

快速入门

安装

通过 pip 安装:

circle-info

首次设置:在使用 SDK 之前,请通过打开 Chloros、Chloros (浏览器)或 Chloros CLI,并使用您的凭据登录。此操作仅需执行一次。在 Linux(无图形界面)上,请使用:chloros-cli login user@example.com 'password'

基本用法

仅需几行代码即可处理文件夹:

circle-info

跨平台路径:本页面的代码示例使用 Windows 格式的路径(例如 C:\\DroneImages\\Flight001)。 在 Linux 上,请改用 Linux 格式的路径(例如 /home/user/drone_images/flight001~/drone_images/flight001)。SDK 在两个平台上的工作原理完全相同。

完全控制

适用于高级工作流:


安装指南

先决条件

在安装 SDK 之前,请确保您已具备:

  1. 已安装 Chloros — Windows:桌面安装程序 (下载); Linux:.deb 软件包 (Linux 安装)

  2. Python 3.7+ 已安装 (python.orgarrow-up-right)

  3. 有效的 Chloros+ 许可证 (升级arrow-up-right)

通过 pip 安装

标准安装:

支持进度监控:

开发版安装:

验证安装

测试 SDK 是否安装正确:


首次设置

许可证激活

SDK 与 Chloros、Chloros(浏览器版)以及 Chloros CLI 使用相同的许可证。 请通过图形界面或 CLI 进行一次激活:

Windows:打开Chloros 或 Chloros(浏览器),并在“用户” 选项卡登录,或使用 CLI。Linux: 使用 CLI(无 GUI 可用):

许可证将缓存于本地,并在重启后保持有效。

circle-check
circle-info

注销:SDK用户可通过logout()方法以编程方式清除缓存凭据。请参阅API参考文档中的logout()方法

测试连接

验证 SDK 能否连接到 Chloros:


API 参考文档

ChlorosLocal 类

用于本地 Chloros 图像处理的主类。

构造函数

参数:

参数
类型
默认值
描述

api_url

str

"http://localhost:5000"

本地 Chloros 后端的 URL 实例

auto_start_backend

bool

True

如有需要自动启动后端

backend_exe

字符串

None (自动检测)

后端可执行文件的路径

timeout

整数

30

请求超时时间(秒)

backend_startup_timeout

int

60

后端启动超时(秒)

示例:

circle-info

跨平台自动检测: SDK 会自动尝试适用于您平台的正确后端路径:

  • WindowsC:\Program Files\MAPIR\Chloros\resources\backend\chloros-backend.exe

  • Linux (.deb)/usr/lib/chloros/chloros-backend

  • Linux (手动): /opt/mapir/chloros/backend/chloros-backend


方法

create_project(project_name, camera=None)

创建一个新的 Chloros 项目。

参数:

参数
类型
必填
描述

project_name

字符串

项目名称

camera

字符串

相机模板(例如,“Survey3N_RGN”、“Survey3W_OCN”)

返回值: dict - 项目创建响应示例:


import_images(folder_path, recursive=False)

从文件夹导入图像。

参数:

参数
类型
必填
描述

folder_path

str/Path

包含图片的文件夹路径

recursive

bool

搜索子文件夹 (默认:False)

返回值: dict - 包含文件数量的导入结果示例:


configure(**settings)

配置处理设置。

参数:

参数
类型
默认值
描述

debayer

字符串

"标准(快速,中等质量)"

去拜耳化方法

vignette_correction

布尔值

True

启用暗角校正

reflectance_calibration

bool

True

启用反射率校准

indices

list

None

待计算的植被指数

export_format

字符串

"TIFF (16位)"

输出格式

ppk

布尔值

False

启用PPK校正

custom_settings

字典

None

高级自定义设置

导出格式:

  • "TIFF (16-bit)" - 推荐用于GIS/摄影测量

  • "TIFF (32-bit, Percent)" - 科学分析

  • "PNG (8-bit)" - 目视检查

  • "JPG (8-bit)" - 压缩输出

**可用索引:**NDVI, NDRE, GNDVI, OSAVI、CIG、EVI、SAVI、MSAVI、MTVI2 等。示例:


process(mode="parallel", wait=True, progress_callback=None)

处理项目图像。

参数:

参数
类型
默认值
描述

mode

字符串

"parallel"

处理模式:"并行" 或 "串行"

wait

bool

True

等待处理完成

progress_callback

callable

None

进度回调函数(progress, msg)

poll_interval

float

2.0

进度轮询间隔(秒)

返回值: dict - 处理结果

circle-exclamation

示例:


get_config()

获取当前项目配置。

返回值: dict - 当前项目配置示例:


get_status()

获取后端状态信息,包括每个线程的处理进度。

返回值: dict - 后端状态,结构如下:

示例:


shutdown_backend()

关闭后端(若由 SDK 启动)。

示例:


logout()

清除本地系统中的缓存凭据。

描述:

通过移除缓存的身份验证凭据来实现程序化注销。这适用于:

  • 在不同的 Chloros+ 账户之间切换

  • 在自动化环境中清除凭据

  • 安全目的(例如,在卸载前移除凭据)

返回值: dict - 注销操作结果示例:

circle-info

需重新认证:调用 logout() 后,必须通过 Chloros、 Chloros(浏览器)或 Chloros CLI 进行重新登录,然后才能使用 SDK。


便捷函数

process_folder(folder_path, **options)

用于处理文件夹的一行便捷函数。

参数:

参数
类型
默认值
描述

folder_path

str/Path

必填

包含图像的文件夹路径

project_name

str

自动生成

项目名称

camera

字符串

None

相机模板

indices

列表

["NDVI"]

待计算的索引

vignette_correction

布尔

True

启用暗角校正

reflectance_calibration

布尔值

True

启用反射率校准

export_format

字符串

"TIFF (16-bit)"

输出格式

mode

字符串

"parallel"

处理模式

progress_callback

可调用

None

进度回调

返回值: dict - 处理结果示例:


上下文管理器支持

SDK 支持上下文管理器以实现自动清理:


完整示例

circle-info

Linux 用户: 以下所有示例均使用 Windows 路径。请将 C:\\... 路径替换为您自己的 Linux 路径(例如 /home/user/...~/...)。 所有 SDK 功能在各平台上的表现完全一致。

示例 1:基本处理

使用默认设置处理文件夹:


示例 2:自定义工作流

完全掌控处理流程:


示例 3:批量处理多个文件夹

处理多个飞行数据集:


示例 4:研究流程集成

将 Chloros 与数据分析集成:


示例 5:自定义进度监控

通过日志记录实现高级进度跟踪:


示例 6:错误处理

适用于生产环境的健壮错误处理:


示例 7:账户管理与注销

通过编程方式管理凭据:


示例 8:命令行工具

使用 SDK 构建自定义 CLI 工具:

用法:


异常处理

SDK 为不同类型的错误提供了专门的异常类:

异常层次结构

异常示例


高级主题

自定义后端配置

使用自定义后端位置或配置:

非阻塞处理

启动处理并继续执行其他任务:

内存管理

对于大型数据集,请分批处理:


故障排除

后端无法启动

问题: SDK 无法启动后端解决方案:

  1. 验证是否已安装 Chloros:

  1. 检查防火墙(Windows)或端口可用性(Linux:lsof -i :5000

  2. 尝试手动指定后端路径:


未检测到许可证问题: SDK 提示缺少许可证解决方案:

  1. 打开 Chloros、Chloros(浏览器)或 Chloros CLI 并登录。

  2. 验证许可证是否已缓存:

  1. 若遇到凭据问题,请清除缓存的凭据并重新登录:

  1. 联系支持:info@mapir.camera


导入错误问题: ModuleNotFoundError: No module named 'chloros_sdk'解决方案:


处理超时问题: 处理超时解决方案:

  1. 延长超时时间:

  1. 处理更小的批次

  2. 检查可用磁盘空间

  3. 监控系统资源


端口已被占用问题: 后端端口 5000 已被占用解决方案:

或查找并关闭冲突进程:


性能提示

优化处理速度

  1. 使用并行模式(需 Chloros+ 版本)

  1. 降低输出分辨率(若可接受)

  1. 禁用不必要的索引

  1. 在 SSD 上处理(而非 HDD)***

内存优化

针对大型数据集:


后台处理

为其他任务释放 Python:


集成示例

Django 集成

Flask API

Jupyter Notebook


常见问题

问:SDK 需要互联网连接吗?

*答:仅在初始许可证激活时需要。通过 Chloros、Chloros(浏览器)或 Chloros CLI 登录后,许可证将缓存至本地,并在离线状态下有效期为 30 天。

问:我可以在没有图形界面的服务器上使用 SDK 吗?答: 可以!SDK 可在 Windows 和 Linux 服务器上以无头模式运行。Linux(推荐用于无头模式):

  • 通过 .deb 包安装

  • 激活许可证:chloros-cli login user@example.com 'password'

Windows 服务器:

  • Windows Server 2016 或更高版本

  • 已安装 Chloros(仅需安装一次)

  • 通过 CLI 或在任意机器上激活许可证


问:桌面版、CLI 和 SDK 之间有什么区别?

功能
桌面图形界面
CLI 命令行
Python SDK

界面

点选式

命令行

Python API

最适合

可视化工作

脚本编写

集成

自动化

有限

良好

优秀

灵活性

基本

良好

最大

许可证

Chloros+

Chloros+

Chloros+

问:我可以使用 SDK 构建的应用程序进行分发吗?答: SDK 代码可以集成到您的应用程序中,但:

  • 最终用户需要安装 Chloros

  • 最终用户需要有效的 Chloros+ 许可证

  • 商业分发需要 OEM 许可

有关 OEM 事宜,请联系 info@mapir.camera。


问:如何更新 SDK?


问:处理后的图像保存在哪里?

默认保存在项目路径中:


问:能否处理由按计划运行的 Python 脚本生成的图像?答: 可以!请使用操作系统计划程序配合 Python 脚本:

Windows: 通过任务计划程序设置为每日运行。Linux: 通过 cron 进行计划:


问:SDK 是否支持 async/await?**答:**当前版本为同步模式。如需异步行为,请使用 wait=False 或在单独线程中运行:


问:如何在不同的 Chloros+ 账户之间切换?答: 使用 logout() 方法清除缓存的凭据,然后使用新账户重新登录:

注销后,请通过 GUI、浏览器或 CLI 使用新账户进行身份验证,然后再使用 SDK。


获取帮助

文档

  • API 参考:本页面

支持渠道

示例代码

此处列出的所有示例均经过测试且可用于生产环境。请复制并根据您的具体用例进行调整。


许可专有软件 - 版权所有 (c) 2025 MAPIR Inc.

SDK 需要有效的 Chloros+ 订阅。禁止未经授权的使用、分发或修改。

最后更新于