Como todo framework, Spinnaker tiene una curva de aprendizaje. Esta respuesta debería ayudarte con los fundamentos del uso del SDK para controlar la cámara y te indicará otros recursos más detallados sobre temas específicos.

Un gran primer recurso es nuestro conjunto de ejemplos de Spinnaker que se instalan junto con el SDK. Nuestros ejemplos se encuentran en:

  • Windows: C:\Program Files\FLIR Systems\Spinnaker\src (o C:\Program Files\Point Grey Research\Spinnaker\src para Spinnaker 1.X)
  • Linux: /opt/spinnaker/src (o /usr/src/spinnaker/src para las versiones 2.1 y anteriores)
  • macOS: /Applications/Spinnaker/src
  • Python: En la carpeta Examples de la descarga de PySpin

El ejemplo Acquisition es el mejor para empezar. Esta respuesta hará referencia al ejemplo de Acquisition en todo momento; se centrará en la versión de C++, pero se siguen los mismos pasos en otros lenguajes con pequeñas diferencias de sintaxis.

¿Cómo puedo acceder a mi cámara mediante la API?

Esto es bastante simple y es un patrón común en cualquier código de Spinnaker. Primero se obtiene una instancia del Sistema Spinnaker:

SystemPtr system = System::GetInstance();

A continuación, utilice este objeto de sistema para obtener una lista de todas las cámaras conectadas al sistema:

CameraList camList = system->GetCameras();

Por último, obtenga la cámara de la lista. La forma más sencilla de hacerlo es con el método GetByIndex:

CameraPtr pCam = camList.GetByIndex(i);

¿Cómo empiezo a transmitir la cámara y a tomar imágenes?

El código para conseguirlo también es sencillo, pero hay que tener en cuenta algunos conceptos importantes. Inicie la transmisión de la cámara con

pCam->BeginAcquisition();

Esto hace que la cámara comience a adquirir imágenes. Es importante tener en cuenta que en este punto, la cámara se ejecuta de forma asíncrona al código. En términos simples, después de que la cámara comience la adquisición, continuará capturando imágenes, incluso mientras el programa no esté haciendo nada. Una vez que la cámara captura una imagen, esta se transfiere automáticamente al PC y se almacena en la memoria RAM del mismo. El espacio asignado para almacenar esa imagen en la memoria se llama buffer. Un usuario solo puede interactuar con una imagen una vez que se ha recuperado del buffer con este método:

ImagePtr pResultImage = pCam->GetNextImage(1000);

La naturaleza asíncrona del sistema significa que GetNextImage debe llamarse aproximadamente con la misma frecuencia que la cámara captura una imagen para evitar que se pierdan fotogramas. Si no se llama a GetNextImage con la suficiente frecuencia, el búfer de la imagen puede llenarse y se pueden perder fotogramas.

¿Cómo puedo cambiar los ajustes de la cámara?

Esto se hace a través del nodemap de la cámara al que se puede acceder con

INodeMap& nodeMap = pCam->GetNodeMap();

Uso de Spinview para acelerar la depuración y el desarrollo

Spinview es un software GUI que se instala junto con Spinnaker. Aunque está diseñado como un software de demostración para mostrar las características de la cámara, esta GUI puede ser muy útil durante el desarrollo de aplicaciones. Con Spinview es muy fácil leer y escribir rápidamente en el nodemap de la cámara. Al comienzo del desarrollo, recomendamos utilizar Spinview para configurar la cámara de la forma deseada. Esto ayudará a visualizar las operaciones de nodo requeridas, así como a verificar que la cámara es capaz de operar de la manera deseada. Hay disponible una guía rápida de Spinview

Restablecimiento de las cámaras de visión artificial

Ocasionalmente, las cámaras pueden caer en un mal estado y necesitan ser recuperadas. La forma más fácil de recuperarse de esto es cargar la configuración por defecto de fábrica en la cámara cargando el conjunto de usuarios por defecto.

Para cualquier duda o consulta, contacta con nosotros.