The Pixelink Python wrapper offers software developers a means to adapt existing programs, or develop new imaging applications for Pixelink cameras using Python on Windows and Linux. As a wrapper around the native Pixelink API 4.0, it provides the same easy to use interface that promotes rapid development of custom applications for camera operations as the native API, but with Python’s concise and powerful scripting capabilities. This wrapper supports all Pixelink cameras that use and are compatible with the Pixelink 4.0 API (that is, FireWire, USB, USB3 and Gigabit Ethernet cameras). The wrapper fully supports functionality of auto-focus, gain HDR, and polar cameras, as well as camera operation with Navitar zoom systems.


To review the Pixelink Python wrapper project on PyPI or GitHub, use one of the following links:


PyPi location: https://pypi.org/project/pixelinkWrapper/

GitHub repository: https://github.com/pixelink-support/pixelinkPythonWrapper



Tested Platforms


- Windows 10 (64-bit) with Pixelink SDK v10.6

- Linux Ubuntu 18.04 PC (x86 64-bit) with Linux SDK v2.4

- Python 3.9.2 (64-bit)



Installation


How to install the Pixelink Python wrapper


On Windows:

1. Open https://pixelink.com/products/software/

2. Download and install Pixelink Capture or the Pixelink SDK

3. Run 'pip install pixelinkWrapper'


On Linux:

1. Open https://pixelink.com/products/software/sdk/

2. Download and install the Linux SDK

3. Run 'pip install pixelinkWrapper'



Code Samples


Pixelink Python code samples can be downloaded from https://github.com/pixelink-support/pixelinkPythonWrapper.



General Information


The Pixelink Python wrapper is a thin wrapper around the Pixelink 4.0 API. Pixelink API functions are exposed as class methods of the PxLApi class, in the pixelink module. Applications created with this wrapper can be used with all Pixelink cameras, with the exception of PL-A640/650/660 series cameras. Consult the Pixelink API documentation for specific information - most Pixelink 4.0 API functionality is preserved, with a few minor limitations, so the regular documentation should suffice for most users. For more information about those limitations, please refer to the Tips and Tricks, and Gotchas section of this documentation below.


There is no Pixelink Python wrapper for the Pixelink 3.2 API since it is obsolete and hence, PL-A640/650/660 series cameras are not supported.


Pixelink API functions are exposed as class methods of the PxLApi class, and Pixelink API defines are grouped as subclasses with respect to their functionality in the pixelink module.


Many of the functions accept parameters with assigned arguments. However, several functions have parameter(s) set with default value(s). They are

  • getFeature

  • initialize

  • setPreviewSettings


Every function returns a tuple. The tuple consists of an API return code with parameter(s) on success, and an API error return code on failure.



Tips and Tricks, and Gotchas


- Callback.FORMAT_IMAGE is not supported.


-  Settings.SETTINGS_FACTORY define can be used instead of the DefaultMemoryChannel.FACTORY_DEFAULTS_MEMORY_CHANNEL.


- Preview window

  • Defines of the preview window from the WindowsPreview class can only be used on Windows, and not on Linux.

  • Architecture of the preview window on Windows is different than on Linux. The preview window will go 'Not Responding', if the message pump is not polled and events are not forwarded onto its handler. In order to overcome this limitation, it is proposed to use the user32.PeekMessageW function. See preview.py sample for Windows that uses this function.


- Callback function return statements

  • Note that each of the callback functions are shown to return an error code. This is to preserve a likeness to the native Pixelink 4.0 API. However, Python users should not rely on this return code. Rather, all error checking should be done within the callback routine itself.


- This wrapper provides the following helper functions that are not present in the native Pixelink API

  • getBytesPerPixel

  • imageSize


- Use of a mutable ctypes character buffer instance in getNextFrame and formatImage functions

  • Both getNextFrame and formatImage expect a data buffer argument being passed as a ctypes character buffer instance. Such mutable character buffer instance can be created using the ctypes.create_string_buffer() function. Using this buffer type allows Python wrapper to maintain similar efficiency as the Pixelink 4.0 API. Furthermore, the same data buffer instance can be passed from getNextFrame to formatImage function.



Getting Help from Pixelink Support


For additional assistance, please contact support@pixelink.com.