Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/elerac/easypyspin
cv2.VideoCapture like wrapper for FLIR Spinnaker SDK
https://github.com/elerac/easypyspin
flir-cameras opencv python spinnaker spinnaker-sdk
Last synced: 4 days ago
JSON representation
cv2.VideoCapture like wrapper for FLIR Spinnaker SDK
- Host: GitHub
- URL: https://github.com/elerac/easypyspin
- Owner: elerac
- License: mit
- Created: 2019-11-27T09:55:33.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2023-06-27T13:10:14.000Z (over 1 year ago)
- Last Synced: 2024-12-19T05:07:49.034Z (4 days ago)
- Topics: flir-cameras, opencv, python, spinnaker, spinnaker-sdk
- Language: Python
- Homepage:
- Size: 134 KB
- Stars: 100
- Watchers: 5
- Forks: 19
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# EasyPySpin
EasyPySpin is an unofficial wrapper for FLIR [Spinnaker SDK](https://www.flir.com/products/spinnaker-sdk/). This wrapper provides much the same way as the OpenCV VideoCapture class.
## Requirement
* PySpin
* Download Spinnaker SDK from [here](https://www.flir.com/support-center/iis/machine-vision/downloads/spinnaker-sdk-and-firmware-download/).
* OpenCV## Installation
```sh
pip install EasyPySpin
```
After installation, connect the camera and try [examples/video.py](examples/video.py).## Usage
### Capture image from camera
Here's an example to capture image from camera.
```python
import cv2
import EasyPySpincap = 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](#Supported-VideoCaptureProperties).
```python
cap.set(cv2.CAP_PROP_EXPOSURE, 100000) # us
cap.set(cv2.CAP_PROP_GAIN, 10) # dBwidth = 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.
```python
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.
```python
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.
```sh
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.
* [Spinnaker® SDK Programmer's Guide and API Reference (C++)](http://softwareservices.ptgrey.com/Spinnaker/latest/index.html)
* [Getting Started with Spinnaker SDK on MacOS Applicable products](https://www.flir.com/support-center/iis/machine-vision/application-note/getting-started-with-spinnaker-sdk-on-macos/)
* [Spinnaker Nodes](https://www.flir.com/support-center/iis/machine-vision/application-note/spinnaker-nodes/)
* [Configuring Synchronized Capture with Multiple Cameras](https://www.flir.com/support-center/iis/machine-vision/application-note/configuring-synchronized-capture-with-multiple-cameras)