API : Python SDK

O Chloros Python SDK fornece acesso programático ao motor de processamento de imagens Chloros, permitindo a automatização, fluxos de trabalho personalizados e integração perfeita com as suas aplicações Python e pipelines de investigação.

Principais funcionalidades

  • 🐍 Python nativo - Código API limpo e em Python para processamento de imagens

  • 🔧 Acesso total ao API - Controlo total sobre o processamento Chloros

  • 🚀 Automatização - Crie fluxos de trabalho personalizados de processamento em lote

  • 🔗 Integração - Incorpore o Chloros em aplicações Python existentes

  • 📊 Pronto para investigação - Perfeito para pipelines de análise científica

  • Processamento Paralelo - Escala de acordo com os núcleos da sua CPU (Chloros+)

Requisitos

Requisito
Detalhes

Chloros instalado

Windows: Instalador para computador; Linux: Pacote .deb

Sistema operativo

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

Python

Python 3.7 ou superior

Memória

Mínimo de 8 GB de RAM (recomendado 16 GB)

Internet

Necessária para ativação da licença

circle-exclamation

Início rápido

Instalação

Instale via pip:

circle-info

Configuração inicial: Antes de utilizar o SDK, ative a sua licença Chloros+ abrindo o Chloros, Chloros (Navegador) ou o Chloros CLI e iniciando sessão com as suas credenciais. Isto só precisa de ser feito uma vez. No Linux (sem GUI), utilize: chloros-cli login user@example.com 'password'

Utilização básica

Processe uma pasta com apenas algumas linhas:

circle-info

Caminhos multiplataforma: Os exemplos de código nesta página utilizam caminhos no estilo Windows (por exemplo, C:\\DroneImages\\Flight001). No Linux, utilize em vez disso caminhos do tipo Linux (por exemplo, /home/user/drone_images/flight001 ou ~/drone_images/flight001). O SDK funciona de forma idêntica em ambas as plataformas.

Controlo total

Para fluxos de trabalho avançados:


Guia de instalação

Pré-requisitos

Antes de instalar o SDK, certifique-se de que tem:

  1. Chloros instalado — Windows: Instalador para computador (descarregar); Linux: Pacote .deb (Instalação do Linux)

  2. Python 3.7+ instalado (python.orgarrow-up-right)

  3. Licença Chloros+ ativa (atualizaçãoarrow-up-right)

Instalar via pip

Instalação padrão:

Com suporte para monitorização do progresso:

Instalação de desenvolvimento:

Verificar a instalação

Teste se o SDK está instalado corretamente:


Configuração inicial

Ativação da licença

O SDK utiliza a mesma licença que o Chloros, o Chloros (Navegador) e o Chloros CLI. Ative uma vez através da GUI ou do CLI:Windows:Abra oChloros ou o Chloros (Navegador) e inicie sessão no separador ou utilize o CLI.Linux: Utilize o CLI (sem GUI disponível):

A licença é armazenada em cache localmente e mantém-se após reinicializações.

circle-check
circle-info

Sair: Os utilizadores do SDK podem limpar programaticamente as credenciais armazenadas em cache utilizando o método logout(). Consulte o método logout() na Referência do API.

Testar ligação

Verifique se o SDK consegue ligar-se ao Chloros:


Referência do API

Classe ChlorosLocal

Classe principal para o processamento de imagens local do Chloros.

Construtor

Parâmetros:

Parâmetro
Tipo
Padrão
Descrição

api_url

str

"http://localhost:5000"

URL do backend local Chloros

auto_start_backend

bool

True

Iniciar automaticamente o backend, se necessário

backend_exe

str

None (auto-detect)

Caminho para o executável do backend

timeout

int

30

Tempo limite da solicitação em segundos

backend_startup_timeout

int

60

Tempo limite para o arranque do backend (segundos)

Exemplos:

circle-info

Detecção automática multiplataforma: O SDK tenta automaticamente o caminho de backend correto para a sua plataforma:

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

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

  • Linux (manual): /opt/mapir/chloros/backend/chloros-backend


Métodos

create_project(project_name, camera=None)

Criar um novo projeto Chloros.

Parâmetros:

Parâmetro
Tipo
Obrigatório
Descrição

project_name

str

Sim

Nome do projeto

camera

str

Não

Modelo de câmara (por exemplo, "Survey3N_RGN", "Survey3W_OCN")

Retorna: dict - Resposta à criação do projetoExemplo:


import_images(folder_path, recursive=False)

Importar imagens de uma pasta.

Parâmetros:

Parâmetro
Tipo
Obrigatório
Descrição

folder_path

str/Path

Sim

Caminho para a pasta com imagens

recursive

bool

Não

Pesquisar subpastas (padrão: False)

Retorna: dict - Resultados da importação com contagem de ficheirosExemplo:


configure(**settings)

Configurar definições de processamento.

Parâmetros:

Parâmetro
Tipo
Padrão
Descrição

debayer

str

"Padrão (Rápido, Qualidade Média)"

Método de debayer

vignette_correction

bool

True

Ativar correção de vinheta

reflectance_calibration

bool

True

Ativar calibração de refletância

indices

lista

None

Índices de vegetação a calcular

export_format

str

"TIFF (16 bits)"

Formato de saída

ppk

bool

False

Ativar correções PPK

custom_settings

dict

None

Configurações personalizadas avançadas

Formatos de exportação:

  • "TIFF (16-bit)" - Recomendado para SIG/fotogrametria

  • "TIFF (32-bit, Percent)" - Análise científica

  • "PNG (8-bit)" - Inspeção visual

  • "JPG (8-bit)" - Saída comprimida

**Índices disponíveis:**NDVI, NDRE, GNDVI, OSAVI, CIG, EVI, SAVI, MSAVI, MTVI2 e mais.Exemplo:


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

Processar as imagens do projeto.

Parâmetros:

Parâmetro
Tipo
Padrão
Descrição

mode

str

"parallel"

Modo de processamento: "paralelo" ou "serial"

wait

bool

True

Aguardar conclusão

progress_callback

callable

None

Função de callback de progresso (progress, msg)

poll_interval

float

2.0

Intervalo de sondagem para progresso (segundos)

Retorna: dict - Resultados do processamento

circle-exclamation

Exemplo:


get_config()

Obter a configuração atual do projeto.

Retorna: dict - Configuração atual do projetoExemplo:


get_status()

Obter informações sobre o estado do backend, incluindo o progresso do processamento por thread.

Retorna: dict - Estado do backend com a seguinte estrutura:

Exemplo:


shutdown_backend()

Encerra o backend (se tiver sido iniciado por SDK).

Exemplo:


logout()

Limpa as credenciais armazenadas em cache do sistema local.

Descrição:

Desconecta programaticamente removendo as credenciais de autenticação armazenadas em cache. Isto é útil para:

  • Alternar entre diferentes contas Chloros+

  • Limpar credenciais em ambientes automatizados

  • Fins de segurança (por exemplo, remover credenciais antes da desinstalação)

Retorna: dict - Resultado da operação de desconectExemplo:

circle-info

Reautenticação necessária: Após chamar logout(), deve iniciar sessão novamente através de Chloros, Chloros (Navegador) ou Chloros CLI antes de utilizar o SDK.


Funções de conveniência

process_folder(folder_path, **options)

Função de conveniência de uma linha para processar uma pasta.

Parâmetros:

Parâmetro
Tipo
Padrão
Descrição

folder_path

str/Path

Obrigatório

Caminho para a pasta com imagens

project_name

str

Gerado automaticamente

Nome do projeto

camera

str

None

Modelo de câmara

indices

lista

["NDVI"]

Índices a calcular

vignette_correction

bool

True

Ativar correção de vinheta

reflectance_calibration

bool

True

Ativar calibração de refletância

export_format

str

"TIFF (16 bits)"

Formato de saída

mode

str

"parallel"

Modo de processamento

progress_callback

callable

None

Callback de progresso

Retorna: dict - Resultados do processamentoExemplo:


Suporte ao Gestor de Contexto

O SDK suporta gestores de contexto para limpeza automática:


Exemplos Completos

circle-info

Utilizadores do Linux: Todos os exemplos abaixo utilizam caminhos do Windows. Substitua os caminhos C:\\... pelos seus caminhos Linux (por exemplo, /home/user/... ou ~/...). Todas as funcionalidades do SDK são idênticas em todas as plataformas.

Exemplo 1: Processamento básico

Processe uma pasta com as definições predefinidas:


Exemplo 2: Fluxo de trabalho personalizado

Controlo total sobre o pipeline de processamento:


Exemplo 3: Processamento em lote de várias pastas

Processar vários conjuntos de dados de voos:


Exemplo 4: Integração no pipeline de investigação

Integrar o Chloros com a análise de dados:


Exemplo 5: Monitorização personalizada do progresso

Acompanhamento avançado do progresso com registo:


Exemplo 6: Tratamento de erros

Tratamento robusto de erros para utilização em produção:


Exemplo 7: Gestão de contas e saída

Gerir credenciais programaticamente:


Exemplo 8: Ferramenta de linha de comandos

Crie uma ferramenta CLI personalizada com o SDK:

Utilização:


Tratamento de exceções

O SDK fornece classes de exceção específicas para diferentes tipos de erro:

Hierarquia de exceções

Exemplos de exceções


Tópicos avançados

Configuração personalizada do backend

Utilize uma localização ou configuração personalizada do backend:

Processamento não bloqueante

Inicie o processamento e continue com outras tarefas:

Gestão de memória

Para conjuntos de dados de grande dimensão, processe em lotes:


Resolução de problemas

Backend não inicia

Problema: SDK não consegue iniciar o backendSoluções:

  1. Verifique se o Chloros está instalado:

  1. Verifique a firewall (Windows) ou a disponibilidade da porta (Linux: lsof -i :5000)

  2. Experimente o caminho manual do backend:


Licença não detetadaProblema: O SDK avisa que falta a licençaSoluções:

  1. Abra o Chloros, o Chloros (Navegador) ou o Chloros CLI e inicie sessão.

  2. Verifique se a licença está armazenada em cache:

  1. Se tiver problemas com as credenciais, limpe as credenciais armazenadas em cache e volte a iniciar sessão:

  1. Contacte o suporte: info@mapir.camera


Erros de importaçãoProblema: ModuleNotFoundError: No module named 'chloros_sdk'Soluções:


Tempo limite de processamentoProblema: O tempo de processamento expirouSoluções:

  1. Aumente o tempo limite:

  1. Processe lotes menores

  2. Verifique o espaço disponível em disco

  3. Monitorize os recursos do sistema


Porta já em usoProblema: Porta 5000 do backend ocupadaSoluções:

Ou localize e feche o processo em conflito:


Dicas de desempenho

Otimizar a velocidade de processamento

  1. Utilizar o modo paralelo (requer Chloros+)

  1. Reduzir a resolução de saída (se aceitável)

  1. Desativar índices desnecessários

  1. Processe em SSD (não em HDD)***

Otimização de memória

Para conjuntos de dados grandes:


Processamento em segundo plano

Liberte Python para outras tarefas:


Exemplos de integração

Integração com Django

Flask API

Jupyter Notebook


Perguntas frequentes

P: O SDK requer uma ligação à Internet?

R: Apenas para a ativação inicial da licença. Após iniciar sessão através do Chloros, Chloros (Navegador) ou Chloros CLI, a licença é armazenada em cache localmente e funciona offline durante 30 dias.***

P: Posso utilizar o SDK num servidor sem GUI?R: Sim! O SDK funciona sem interface gráfica tanto em servidores Windows como Linux.Linux (recomendado para modo sem interface gráfica):

  • Instalar através do pacote .deb

  • Ativar licença: chloros-cli login user@example.com 'password'

Servidor Windows:

  • Servidor Windows 2016 ou posterior

  • Chloros instalado (uma única vez)

  • Licença ativada através do CLI ou em qualquer máquina


P: Qual é a diferença entre Desktop, CLI e SDK?

Funcionalidade
GUI do Desktop
Linha de comando do CLI
Python SDK

Interface

Apontar e clicar

Comando

Python API

Ideal para

Trabalho visual

Scripts

Integração

Automação

Limitada

Boa

Excelente

Flexibilidade

Básica

Boa

Máxima

Licença

Chloros+

Chloros+

Chloros+

P: Posso distribuir aplicações criadas com o SDK?R: O código do SDK pode ser integrado nas suas aplicações, mas:

  • Os utilizadores finais precisam de ter o Chloros instalado

  • Os utilizadores finais precisam de licenças ativas do Chloros+

  • A distribuição comercial requer licenciamento OEM

Contacte o info@mapir.camera para questões relacionadas com OEM.


P: Como atualizo o SDK?


P: Onde são guardadas as imagens processadas?

Por predefinição, no Caminho do Projeto:


P: Posso processar imagens a partir de scripts Python executados de forma programada?R: Sim! Utilize o agendador do seu sistema operativo com scripts Python:

Windows: Agende através do Agendador de Tarefas para execução diária.Linux: Agende através do cron:


P: O SDK suporta async/await?R: A versão atual é síncrona. Para comportamento assíncrono, utilize o wait=False ou execute numa thread separada:


P: Como alterno entre diferentes contas Chloros+?R: Utilize o método logout() para limpar as credenciais em cache e, em seguida, volte a iniciar sessão com a nova conta:

Após terminar a sessão, autentique-se com a nova conta através da GUI, do navegador ou do CLI antes de utilizar novamente o SDK.


Obter ajuda

Documentação

  • Referência do API: Esta página

Canais de suporte

Código de exemplo

Todos os exemplos aqui listados foram testados e estão prontos para produção. Copie-os e adapte-os ao seu caso de uso.


O SDK requer uma subscrição ativa do Chloros+. É proibida a utilização, distribuição ou modificação não autorizadas.

Last updated