EasyPySpin

cv2.VideoCapture like wrapper for FLIR Spinnaker SDK

MIT License

Downloads
225
Stars
97
Committers
2

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 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

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.