EasyPySpin
cv2.VideoCapture like wrapper for FLIR Spinnaker SDK
Install / Use
/learn @elerac/EasyPySpinREADME
EasyPySpin
EasyPySpin is an unofficial wrapper for FLIR Spinnaker SDK. This wrapper provides much the same way as the OpenCV VideoCapture class.
Requirement
- PySpin
- Download Spinnaker SDK from here.
- OpenCV
Installation
pip install EasyPySpin
After installation, connect the camera and try examples/video.py.
Usage
Capture image from camera
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()
Basic property settings
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)
Advanced property settings
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")
Supported VideoCaptureProperties
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 <br> AcquisitionFrameRate = value | value = AcquisitionResultingFrameRate|
| cv2.CAP_PROP_BRIGHTNESS | float | AutoExposureEVCompensation = value | value = AutoExposureEVCompensation |
| cv2.CAP_PROP_GAIN | float | if value != -1 <br> GainAuto = Off <br> Gain = value <br> else <br> GainAuto = Continuous | value = Gain |
| cv2.CAP_PROP_EXPOSURE | float | if value != -1 <br> ExposureAuto = Off <br> ExposureTime = value <br> else <br> ExposureAuto = Continuous | value = ExposureTime |
| cv2.CAP_PROP_GAMMA | float | GammaEnable = True <br> Gamma = value | value = Gamma |
| cv2.CAP_PROP_TEMPERATURE | float | | value = DeviceTemperature |
| cv2.CAP_PROP_TRIGGER | bool | if value == True <br> TriggerMode = On <br> else <br> TriggerMode = Off | if trigger_mode == On <br> value = True <br> elif trigger_mode == Off <br> value = False |
| cv2.CAP_PROP_TRIGGER_DELAY | float | TriggerDelay = value | value = TriggerDelay |
| cv2.CAP_PROP_BACKLIGHT | bool | if value == True <br> DeviceIndicatorMode = Active <br> else <br> DeviceIndicatorMode = Inactive | if device_indicator_mode == Active <br> value = True <br> elif device_indicator_mode == Inactive <br> value = False |
| cv2.CAP_PROP_AUTO_WB | bool | if value == True <br> BalanceWhiteAuto = Continuous <br> else <br> BalanceWhiteAuto = Off | if balance_white_auto == Continuous <br> value = True <br> elif balance_white_auto == Off <br> value = False |
Command-Line Tool
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]
External Links
Here are some external links that are useful for using Spinnaker SDK.
