EasyPySpin is an unofficial wrapper for FLIR Spinnaker SDK. This wrapper provides much the same way as the OpenCV VideoCapture class.
pip install EasyPySpin
After installation, connect the camera and try examples/video.py.
Here's an example to capture image from camera.
import cv2
import EasyPySpin
cap = EasyPySpin.VideoCapture(0)
ret, frame = cap.read()
cv2.imwrite("frame.png", frame)
cap.release()
You can access properties using cap.set(propId, value)
or cap.get(propId)
. See also supported propId.
cap.set(cv2.CAP_PROP_EXPOSURE, 100000) # us
cap.set(cv2.CAP_PROP_GAIN, 10) # dB
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
cap.set()
and cap.get()
can only access basic properties. To access advanced properties, you can use QuickSpin API, which PySpin supports.
cap.cam.AdcBitDepth.SetValue(PySpin.AdcBitDepth_Bit12)
cap.cam.PixelFormat.SetValue(PySpin.PixelFormat_Mono16)
The other way is to use cap.set_pyspin_value()
or cap.get_pyspin_value()
, which are supported by EasyPySpin. These methods check whether the variable is writeable or readable and check the type of the variable, etc., at the same time.
cap.set_pyspin_value("AdcBitDepth", "Bit12")
cap.set_pyspin_value("PixelFormat", "Mono16")
cap.get_pyspin_value("GammaEnable")
cap.get_pyspin_value("DeviceModelName")
Here is the list of supported VideoCaptureProperties.
In set(propId, value)
and get(propId)
, PySpin is used to set and get the camera's settings. The relationship between propId
and PySpin settings is designed to be as close in meaning as possible. The table below shows the relationship between propId
and PySpin settings in pseudo-code format.
propId | type | set(propId, value) | value = get(propId) |
---|---|---|---|
cv2.CAP_PROP_FRAME_WIDTH | int | Width = value |
value = Width |
cv2.CAP_PROP_FRAME_HEIGHT | int | Height = value |
value = Height |
cv2.CAP_PROP_FPS | float | AcquisitionFrameRateEnable = True AcquisitionFrameRate = value |
value = AcquisitionResultingFrameRate |
cv2.CAP_PROP_BRIGHTNESS | float | AutoExposureEVCompensation = value |
value = AutoExposureEVCompensation |
cv2.CAP_PROP_GAIN | float | if value != -1 GainAuto = Off Gain = value else GainAuto = Continuous |
value = Gain |
cv2.CAP_PROP_EXPOSURE | float | if value != -1 ExposureAuto = Off ExposureTime = value else ExposureAuto = Continuous |
value = ExposureTime |
cv2.CAP_PROP_GAMMA | float | GammaEnable = True Gamma = value |
value = Gamma |
cv2.CAP_PROP_TEMPERATURE | float | value = DeviceTemperature |
|
cv2.CAP_PROP_TRIGGER | bool | if value == True TriggerMode = On else TriggerMode = Off |
if trigger_mode == On value = True elif trigger_mode == Off value = False |
cv2.CAP_PROP_TRIGGER_DELAY | float | TriggerDelay = value |
value = TriggerDelay |
cv2.CAP_PROP_BACKLIGHT | bool | if value == True DeviceIndicatorMode = Active else DeviceIndicatorMode = Inactive |
if device_indicator_mode == Active value = True elif device_indicator_mode == Inactive value = False |
cv2.CAP_PROP_AUTO_WB | bool | if value == True BalanceWhiteAuto = Continuous else BalanceWhiteAuto = Off |
if balance_white_auto == Continuous value = True elif balance_white_auto == Off value = False |
EasyPySpin provides a command-line tool. Connect the camera and execute the following commands, as shown below, then you can view the captured images.
EasyPySpin [-h] [-i INDEX] [-e EXPOSURE] [-g GAIN] [-G GAMMA]
[-b BRIGHTNESS] [-f FPS] [-s SCALE]
Here are some external links that are useful for using Spinnaker SDK.