API : Python SDK

Chloros Python SDK забезпечує програмний доступ до механізму обробки зображень Chloros, що дозволяє автоматизувати процеси, створювати власні робочі процеси та безперешкодно інтегрувати його з вашими додатками Python та дослідницькими конвеєрами.

Основні особливості

  • 🐍 Нативний Python — чистий, написаний на Python API для обробки зображень

  • 🔧 Повний доступ до API — повний контроль над обробкою Chloros

  • 🚀 Автоматизація — створюйте власні робочі процеси пакетної обробки

  • 🔗 Інтеграція — вбудовуйте Chloros в існуючі Python-додатки

  • 📊 Готовий до досліджень — ідеально підходить для наукових аналітичних конвеєрів

  • Паралельна обробка — масштабується відповідно до кількості ядер вашого процесора (Chloros+)

Вимоги

Вимога
Деталі

Chloros встановлено

Windows: інсталятор для настільних ПК; Linux: Пакет .deb

Операційна система

Windows 10/11 (64-біт), Linux x86_64 (amd64), Linux arm64 (NVIDIA Jetson JetPack 6)

Python

Python 3.7 або вище

Пам'ять

Мінімум 8 ГБ оперативної пам'яті (рекомендується 16 ГБ)

Інтернет

Необхідний для активації ліцензії

circle-exclamation

Швидкий старт

Встановлення

Встановіть за допомогою pip:

circle-info

Перша настройка: Перед використанням SDK активуйте свою ліцензію Chloros+ шляхом відкриття 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 (Встановлення)

  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 (графічний інтерфейс недоступний):

Ліцензія зберігається в локальному кеші та зберігається після перезавантаження.

circle-check
circle-info

Вихід: Користувачі SDK можуть програмно очистити кешовані облікові дані за допомогою методу logout(). Див. метод logout() у довіднику API.

Перевірка з'єднання

Перевірте, чи може SDK підключитися до Chloros:


Довідка API

Клас ChlorosLocal

Основний клас для локальної обробки зображень Chloros.

Конструктор

Параметри:

Параметр
Тип
Значення за замовчуванням
Опис

api_url

str

"http://localhost:5000"

URL локального бекенду Chloros

auto_start_backend

bool

True

Автоматично запускати бекенд, якщо потрібно

backend_exe

str

None (автовиявлення)

Шлях до виконуваного файлу бекенду

timeout

int

30

Тайм-аут запиту в секундах

backend_startup_timeout

int

60

Тайм-аут запуску бекенду (секунди)

Приклади:

circle-info

Автоматичне виявлення платформи: SDK автоматично підбирає правильний шлях до бекенду для вашої платформи:

  • Windows: C:\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

str

Так

Назва проекту

camera

str

Ні

Шаблон камери (наприклад, "Survey3N_RGN", "Survey3W_OCN")

Повертає: dict — відповідь на створення проектуПриклад:


import_images(folder_path, recursive=False)

Імпортувати зображення з папки.

Параметри:

Параметр
Тип
Обов'язковий
Опис

folder_path

str/Path

Так

Шлях до папки із зображеннями

recursive

bool

Ні

Шукати в підпапках (за замовчуванням: False)

Повертає: dict - Результати імпорту з кількістю файлівПриклад:


configure(**settings)

Налаштування параметрів обробки.

Параметри:

Параметр
Тип
За замовчуванням
Опис

debayer

str

"Стандартний (Швидкий, Середня якість)"

Метод дебайєру

vignette_correction

bool

True

Увімкнути корекцію віньєтування

reflectance_calibration

bool

True

Увімкнути калібрування відбиття

indices

список

None

Індекси рослинності для розрахунку

export_format

str

"TIFF (16-біт)"

Формат виводу

ppk

bool

False

Увімкнути корекції PPK

custom_settings

dict

None

Розширені налаштування

Формати експорту:

  • "TIFF (16-bit)" — Рекомендовано для ГІС/фотограмметрії

  • "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

str

"parallel"

Режим обробки: "parallel" або "serial"

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

str

None

Шаблон камери

indices

список

["NDVI"]

Індекси для обчислення

vignette_correction

лог

True

Увімкнути корекцію віньєтування

reflectance_calibration

bool

True

Увімкнути калібрування відбиття

export_format

str

"TIFF (16-біт)"

Формат виводу

mode

str

"parallel"

Режим обробки

progress_callback

callable

None

Зворотний виклик прогресу

Повертає: dict - Результати обробкиПриклад:


Підтримка менеджерів контексту

SDK підтримує менеджери контексту для автоматичного очищення:


Повні приклади

circle-info

Користувачі Linux: Усі наведені нижче приклади використовують шляхи Windows. Замініть шляхи C:\\... на ваші шляхи Linux (наприклад,, /home/user/... або ~/...). Усі функції SDK однакові на всіх платформах.

Приклад 1: Базова обробка

Обробка папки з налаштуваннями за замовчуванням:


Приклад 2: Налаштований робочий процес

Повний контроль над конвеєром обробки:


Приклад 3: Пакетна обробка декількох папок

Обробка декількох наборів даних польотів:


Приклад 4: Інтеграція дослідницького конвеєра

Інтеграція Chloros з аналізом даних:


Приклад 5: Налаштований моніторинг прогресу

Розширене відстеження прогресу з веденням журналу:


Приклад 6: Обробка помилок

Надійна обробка помилок для використання у виробничому середовищі:


Приклад 7: Управління обліковим записом та вихід із системи

Управління обліковими даними програмно:


Приклад 8: Інструмент командного рядка

Створіть власний інструмент CLI за допомогою SDK:

Використання:


Обробка винятків

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 2016 або пізнішої версії

  • Встановлено Chloros (одноразово)

  • Ліцензія активована через CLI або на будь-якому комп'ютері


Питання: У чому різниця між Desktop, CLI та SDK?

Функція
Графічний інтерфейс Desktop
Командний рядок CLI
Python SDK

Інтерфейс

«Точка-клац»

Команда

Python API

Найкраще підходить для

Візуальної роботи

Скриптування

Інтеграції

Автоматизація

Обмежена

Добра

Відмінна

Гнучкість

Базова

Добра

Максимальна

Ліцензія

Chloros+

Chloros+

Chloros+

Питання: Чи можу я розповсюджувати програми, створені за допомогою SDK?Відповідь: Код SDK можна інтегрувати у ваші програми, але:

  • Кінцеві користувачі повинні мати встановлений Chloros

  • Кінцеві користувачі повинні мати активні ліцензії Chloros+

  • Для комерційного розповсюдження потрібна ліцензія OEM

Зверніться до info@mapir.camera з питань щодо ліцензій OEM.


Питання: Як оновлювати SDK?


Питання: Де зберігаються оброблені зображення?

За замовчуванням — у шляху до проекту:


Питання: Чи можна обробляти зображення за допомогою скриптів Python, що виконуються за розкладом?Відповідь: Так! Використовуйте планувальник ОС зі скриптами Python:

Windows: Налаштуйте щоденне виконання через Планувальник завдань.Linux: Налаштуйте через cron:


Питання: Чи підтримує SDK async/await?Відповідь: Поточна версія є синхронною. Для асинхронної роботи використовуйте wait=False або запускайте в окремому потоці:


Питання: Як перемикатися між різними обліковими записами Chloros+?Відповідь: Використовуйте метод logout() для очищення кешованих облікових даних, а потім увійдіть знову з новим обліковим записом:

Після виходу з системи пройдіть автентифікацію за допомогою нового облікового запису через графічний інтерфейс, браузер або CLI, перш ніж знову використовувати SDK.


Отримання допомоги

Документація

  • Довідка API: Ця сторінка

Канали підтримки

Приклади коду

Усі наведені тут приклади перевірені та готові до використання у виробництві. Скопіюйте та адаптуйте їх для своїх потреб.


SDK вимагає активної підписки на Chloros+. Несанкціоноване використання, розповсюдження або модифікація заборонені.

Last updated