Skip to main content

A Python driver for the PixeLINK camera

Project description

A Python driver for the PixeLINK camera.

Compatibility

Tested and developed with the following environment,

  • PixeLINK camera model: PixeLINK GigE PL-B781G
  • PixeLINK Software Development Kit 4.2 - Release 8.7.1 (~2014 including the 2017 version)
  • Window 7 Pro (32 and 64 bit)
  • Linux Ubuntu 16.04 (64bit) (libPxLApi.so.4.2.1.11)
  • Python 2.7 (32 and 64 bit) and Python 3.6 (64bit)

Installation

Use Python’s pip tool to install this package:

pip install pixelink

There are several dependencies,

  • decorator (required)
  • numpy (optional)
  • pillow (optional - used to save the images)

For Window’s users use the following binary repository to install numpy,

Once the Numpy+MKL wheel file is downloaded, then execute the following command (assuming numpy‑1.13.2+mkl‑cp36‑cp36m‑win_amd64.whl):

pip install numpy‑1.13.2+mkl‑cp36‑cp36m‑win_amd64.whl

Linux O/S

For Linux Debian based O/S you will need to install the following dependencies:

sudo apt-get install libsdl2-2.0-0
sudo apt-get install libavcodec-ffmpeg56

And you will need to export the following setting (use your location the pixelink lib directory):

export LD_LIBRARY_PATH=~/Downloads/pixelink/lib

Examples

Frame grabbing with numpy installed,

>>> from pixelink import PixeLINK
>>> cam = PixeLINK()
>>> cam.shutter = 0.002
>>> cam.grab()
array([[17, 18, 17, ..., 18, 16, 17],
       [16, 17, 17, ..., 18, 17, 17],
       [17, 17, 16, ..., 17, 17, 17],
       ...,
       [20, 20, 21, ..., 20, 20, 20],
       [21, 18, 20, ..., 21, 20, 21],
       [22, 21, 20, ..., 20, 21, 20]], dtype=uint8)
>>> raw_data = cam.grab()
>>> raw_data.mean()
21.016006038647344
>>> cam.shutter = 0.003
>>> raw_data = cam.grab()
>>> raw_data.mean()
29.30297418478261
>>> cam.close()
>>>
>>> from PIL import Image
>>> im = Image.fromarray(raw_data)
>>> im.save('test1.png')

Frame grabbing without numpy installed,

>>> from pixelink import PixeLINK
>>> from PIL import Image
>>> cam = PixeLINK()
>>> cam.shutter = 0.004
>>> data = cam.grab()
>>> data
<ctypes.c_char_Array_6624000 object at 0x00000000039EF448>
>>> cam.size
(2208, 3000)
>>> cam.pixel_size
1
>>> im = Image.frombuffer('L', cam.size, data)
__main__:1: RuntimeWarning: the frombuffer defaults may change in a future release; for portability, change the call to read:
  frombuffer(mode, size, data, 'raw', mode, 0, 1)
>>> im.save('test2.png')
>>> cam.close()

Continuous frame grabbing in a thread,

import threading
import time

from pixelink import PixeLINK, PxLerror


def grab_frames(cam):
    frame_num = 0
    time_start = time.time()
    print('Continuous frame grabbing started...')
    while cam.is_open():
        frame_num += 1
        try:
            data = cam.grab()
            # TODO: do something with the data...
        except PxLerror as exc:
            print('ERROR: grab_frames:', str(exc))
            continue
        t_total = time.time() - time_start
        if frame_num % 10 == 0:
            frame_rate = float(frame_num) / t_total
            print('#%04d FPS: %0.3f frames/sec' % (frame_num, frame_rate))


def main():
    cam = PixeLINK()
    cam.shutter = 0.002  # exposure time in seconds
    th = threading.Thread(target=grab_frames, args=[cam])
    th.start()
    try:
        while True:
            time.sleep(1.0)
    except KeyboardInterrupt:
        print('Caught CTRL+C')
    finally:
        print('Closing camera...')
        cam.close()
        print('Waiting for thread...')
        th.join()
        print('Done.')

if __name__ == '__main__':
    main()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
pixelink-1.4.0-py2.py3-none-any.whl (17.7 kB) Copy SHA256 hash SHA256 Wheel 3.6

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page