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.