Back to Aurora Vision Library website

You are here: Start » Function Reference » Camera Support » Flir Spinnaker » Spinnaker_GrabImage

Spinnaker_GrabImage


Header: ThirdPartySdk.h
Namespace: avl
Module: ThirdParty

Captures images from a Flir camera using Spinnaker interface.

Syntax

bool avl::Spinnaker_GrabImage
(
	Spinnaker_State& ioState,
	const atl::Optional<atl::String>& inDeviceSerialNumber,
	atl::Optional<int> inBufferCount,
	atl::Optional<avl::SpinnakerPixelFormat::Type> inPixelFormat,
	avl::SpinnakerBayerConverter::Type inBayerConverter,
	atl::Optional<avl::SpinnakerAutoSettings::Type> inExposureAuto,
	atl::Optional<double> inExposureTime,
	atl::Optional<bool> inFrameRateEnable,
	atl::Optional<double> inFrameRate,
	atl::Optional<avl::SpinnakerAutoSettings::Type> inGainAuto,
	atl::Optional<double> inGain,
	avl::Image& outImage,
	atl::int64& outFrameID,
	atl::int64& outTimestamp
)

Parameters

Name Type Range Default Description
Input will be modified ioState Spinnaker_State& Object used to maintain state of the function.
Input value inDeviceSerialNumber const Optional<String>& NIL Source device serial number
Input value inBufferCount Optional<int> 1 - 10 Number of image buffers
Input value inPixelFormat Optional<SpinnakerPixelFormat::Type> NIL Image pixel format
Input value inBayerConverter SpinnakerBayerConverter::Type Image bayer converter. Used only with Bayer pixel format
Input value inExposureAuto Optional<SpinnakerAutoSettings::Type> NIL Sets the automatic exposure mode
Input value inExposureTime Optional<double> 6 - NIL Exposure time in microseconds
Input value inFrameRateEnable Optional<bool> NIL If enabled, inFrameRate can be used to manually control the frame rate
Input value inFrameRate Optional<double> 1 - NIL Frame rate in Hertz
Input value inGainAuto Optional<SpinnakerAutoSettings::Type> NIL Sets the automatic gain mode
Input value inGain Optional<double> 0 - NIL Controls the amplification of the video signal in dB
Output value outImage Image& Captured frame
Output value outFrameID int64& Captured frame ID
Output value outTimestamp int64& Captured frame timestamp

Description

This filter is intended for establishing connection with camera device using Spinnaker SDK, for streaming images out of it in continuous mode.

Waiting time for new, valid image frame is not limited. For explicitly limiting timeout value and handling timeout condition, use Spinnaker_GrabImage_WithTimeout filter.

Remarks

Camera driver software

This filter is intended to cooperate with camera using its vendor Spinnaker SDK. To be able to connect to camera it is required to install Spinnaker SDK software with camera dedicated drivers. Currently Aurora Vision Studio uses Spinnaker version v2.7.0.128.

Spinnaker SDK can be downloaded from the following website: https://www.flir.com/support/browse/camera-cores--components/machine-vision-cameras/sdks (registration may be required).

During installation you should select "Application Development". Visual Studio Version should be also changed to "Visual Studio 2015".

Camera identification

When there is only one camera connected to computer, inDeviceSerialNumber field can be set to Auto. In this situation first available camera will be found and connected.

inDeviceSerialNumber can be used to pick one of multiple cameras connected to computer. Set this field to device serial number (for example "1234567", should be available on device casing as "s/n: 1234567").

Camera parameters

Most of parameters exposed by camera filters are optional, setting them to 'Auto' leaves related parameters for default configuration by camera driver.

To change other and more advanced camera parameters use configuration tool "SpinView" available with Spinnaker SDK. Refer to SDK documentation to find information about parameters and how to save parameters into memory channels.

It is also possible to adjust more advanced parameters using Spinnaker_SetParameter filters. The parameters name should be obtained from SpinView application or from Spinnaker SDK.

Multithreaded environment

This function is not guaranteed to be thread-safe. When used in multithreaded environment, it has to be manually synchronized.

See Also