Como qualquer estrutura, o Spinnaker tem uma curva de aprendizagem. Esta resposta deverá ajudá-lo com as noções básicas de utilização do SDK para controlar a câmara e indicar-lhe-á recursos mais detalhados sobre tópicos específicos.

Um excelente primeiro recurso é o nosso conjunto de exemplos do Spinnaker que são instalados juntamente com o SDK. Os nossos exemplos podem ser encontrados em:

  • Windows: C:\Program Files "FLIR Systems" (ou C:\Program Files "Point Grey Research" para o Spinnaker 1).
  • Linux: /opt/spinnaker/src (ou /usr/src/spinnaker/src para as versões 2.1 e anteriores)
  • macOS: /Applications/Spinnaker/src
  • Python: Na pasta Examples do download do PySpin

O exemplo Acquisition é o melhor sítio para começar. Esta resposta fará referência ao exemplo Acquisition em todo o texto; centrar-se-á na versão C++, mas os mesmos passos são seguidos noutras linguagens com pequenas diferenças de sintaxe.

Como posso aceder à minha câmara através da API?

Isto é bastante simples e é um padrão comum em qualquer código Spinnaker. Primeiro, obtém-se uma instância do sistema Spinnaker:

SystemPtr system = System::GetInstance();

Em seguida, utilize este objeto do sistema para obter uma lista de todas as câmaras ligadas ao sistema:

CameraList camList = system->GetCameras();

Por fim, obtenha a câmara da lista. A forma mais fácil de o fazer é com o método GetByIndex:

CameraPtr pCam = camList.GetByIndex(i);

Como é que começo a transmitir a câmara e a tirar fotografias?

O código para o conseguir também é simples, mas há alguns conceitos importantes a ter em conta. Inicie a transmissão da câmara com

pCam->BeginAcquisition();

Isto faz com que a câmara comece a adquirir imagens. É importante notar que, neste ponto, a câmara está a funcionar de forma assíncrona ao código. Em termos simples, depois de a câmara começar a adquirir imagens, continuará a capturá-las, mesmo que o programa não esteja a fazer nada. Assim que a câmara capta uma imagem, esta é automaticamente transferida para o PC e armazenada na RAM do PC. O espaço atribuído para armazenar essa imagem na memória é designado por buffer. Um utilizador só pode interagir com uma imagem depois de esta ter sido recuperada da memória intermédia através deste método:

ImagePtr pResultImage = pCam->GetNextImage(1000);

A natureza assíncrona do sistema significa que GetNextImage deve ser chamado aproximadamente com a mesma frequência com que a câmara capta uma imagem para evitar a perda de fotogramas. Se GetNextImage não for chamado com frequência suficiente, o buffer de imagem pode encher e os quadros podem ser perdidos.

Como posso alterar as definições da câmara?

Isto é feito através do mapa nodal da câmara, ao qual se pode aceder com

INodeMap& nodeMap = pCam->GetNodeMap();

Utilizar o Spinview para acelerar a depuração e o desenvolvimento

O Spinview é um software GUI que é instalado juntamente com o Spinnaker. Embora tenha sido concebido como um software de demonstração para mostrar as funcionalidades da câmara, este GUI pode ser muito útil durante o desenvolvimento de aplicações. Com o Spinview, é muito fácil ler e escrever rapidamente no mapa de nó da câmara. No início do desenvolvimento, recomendamos a utilização do Spinview para configurar a câmara conforme pretendido. Isto ajudará a visualizar as operações de nó necessárias, bem como a verificar se a câmara é capaz de funcionar da forma pretendida. Está disponível um guia rápido do Spinview

Restauração das câmaras de visão artificial

Ocasionalmente, as câmaras podem ficar em mau estado e ter de ser recuperadas. A forma mais fácil de recuperar este estado é carregar a configuração de fábrica na câmara, carregando o conjunto de utilizador predefinido.

Se tiver dúvidas ou perguntas, contacte-nos.