{ "info": { "author": "Hans Smit, Danny Smith", "author_email": "jcsmit@xs4all.nl, danny.smith@uq.edu.au", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools" ], "description": "PixeLINK\n========\n\nA Python driver for the PixeLINK camera.\n\n\nCompatibility\n-------------\n\nTested and developed with the following environment,\n\n* PixeLINK camera model: PixeLINK GigE PL-B781G\n* PixeLINK Software Development Kit 4.2 - Release 8.7.1 (~2014 including the 2017 version)\n* Window 7 Pro (32 and 64 bit)\n* Linux Ubuntu 16.04 (64bit) (libPxLApi.so.4.2.1.11)\n* Python 2.7 (32 and 64 bit) and Python 3.6 (64bit)\n\n\nInstallation\n------------\n\nUse Python's pip tool to install this package::\n\n pip install pixelink\n\nThere are several dependencies,\n\n * decorator (required)\n * numpy (optional)\n * pillow (optional - used to save the images)\n\nFor Window's users use the following binary repository to install numpy,\n\n * http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy\n\nOnce the Numpy+MKL wheel file is downloaded, then execute the following\ncommand (assuming numpy\u20111.13.2+mkl\u2011cp36\u2011cp36m\u2011win_amd64.whl)::\n\n pip install numpy\u20111.13.2+mkl\u2011cp36\u2011cp36m\u2011win_amd64.whl\n\n\nLinux O/S\n~~~~~~~~~\n\nFor Linux Debian based O/S you will need to install the following dependencies::\n\n sudo apt-get install libsdl2-2.0-0\n sudo apt-get install libavcodec-ffmpeg56\n\n\nAnd you will need to export the following setting (use your location\nthe pixelink lib directory)::\n\n export LD_LIBRARY_PATH=~/Downloads/pixelink/lib\n\n\nExamples\n--------\n\nFrame grabbing with numpy installed,\n\n.. code-block:: python\n\n >>> from pixelink import PixeLINK\n >>> cam = PixeLINK()\n >>> cam.shutter = 0.002\n >>> cam.grab()\n array([[17, 18, 17, ..., 18, 16, 17],\n [16, 17, 17, ..., 18, 17, 17],\n [17, 17, 16, ..., 17, 17, 17],\n ...,\n [20, 20, 21, ..., 20, 20, 20],\n [21, 18, 20, ..., 21, 20, 21],\n [22, 21, 20, ..., 20, 21, 20]], dtype=uint8)\n >>> raw_data = cam.grab()\n >>> raw_data.mean()\n 21.016006038647344\n >>> cam.shutter = 0.003\n >>> raw_data = cam.grab()\n >>> raw_data.mean()\n 29.30297418478261\n >>> cam.close()\n >>>\n >>> from PIL import Image\n >>> im = Image.fromarray(raw_data)\n >>> im.save('test1.png')\n\n\nFrame grabbing without numpy installed,\n\n.. code-block:: python\n\n >>> from pixelink import PixeLINK\n >>> from PIL import Image\n >>> cam = PixeLINK()\n >>> cam.shutter = 0.004\n >>> data = cam.grab()\n >>> data\n \n >>> cam.size\n (2208, 3000)\n >>> cam.pixel_size\n 1\n >>> im = Image.frombuffer('L', cam.size, data)\n __main__:1: RuntimeWarning: the frombuffer defaults may change in a future release; for portability, change the call to read:\n frombuffer(mode, size, data, 'raw', mode, 0, 1)\n >>> im.save('test2.png')\n >>> cam.close()\n\n\nContinuous frame grabbing in a thread,\n\n.. code-block:: python\n\n import threading\n import time\n\n from pixelink import PixeLINK, PxLerror\n\n\n def grab_frames(cam):\n frame_num = 0\n time_start = time.time()\n print('Continuous frame grabbing started...')\n while cam.is_open():\n frame_num += 1\n try:\n data = cam.grab()\n # TODO: do something with the data...\n except PxLerror as exc:\n print('ERROR: grab_frames:', str(exc))\n continue\n t_total = time.time() - time_start\n if frame_num % 10 == 0:\n frame_rate = float(frame_num) / t_total\n print('#%04d FPS: %0.3f frames/sec' % (frame_num, frame_rate))\n\n\n def main():\n cam = PixeLINK()\n cam.shutter = 0.002 # exposure time in seconds\n th = threading.Thread(target=grab_frames, args=[cam])\n th.start()\n try:\n while True:\n time.sleep(1.0)\n except KeyboardInterrupt:\n print('Caught CTRL+C')\n finally:\n print('Closing camera...')\n cam.close()\n print('Waiting for thread...')\n th.join()\n print('Done.')\n\n if __name__ == '__main__':\n main()\n\n\nLinks\n-----\n\n* Documentation: https://hsmit.gitlab.io/pixelink/\n* Repository: https://gitlab.com/hsmit/pixelink\n* PyPi Location: https://pypi.python.org/pypi/pixelink\n* PyPi Test Location: https://test.pypi.org/project/pixelink/\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/hsmit/pixelink", "keywords": "pixelink camera api driver", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pixelink", "package_url": "https://pypi.org/project/pixelink/", "platform": "", "project_url": "https://pypi.org/project/pixelink/", "project_urls": { "Homepage": "https://gitlab.com/hsmit/pixelink" }, "release_url": "https://pypi.org/project/pixelink/1.4.0/", "requires_dist": null, "requires_python": "", "summary": "A Python driver for the PixeLINK camera", "version": "1.4.0" }, "last_serial": 4124139, "releases": { "1.2.7": [ { "comment_text": "", "digests": { "md5": "bc24dc621e5821bed836fe8de43bc286", "sha256": "b5c3c2ab44a8614ea5865bb1515438b4b81b14db6e21a5590db212712d53bdbd" }, "downloads": -1, "filename": "pixelink-1.2.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "bc24dc621e5821bed836fe8de43bc286", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17292, "upload_time": "2017-09-22T12:05:45", "url": "https://files.pythonhosted.org/packages/97/5e/0171f50148053ca2cb3eec3c4b1529102b21d38a72135e0a725f993bbbb5/pixelink-1.2.7-py2.py3-none-any.whl" } ], "1.2.8": [ { "comment_text": "", "digests": { "md5": "ad5cd01ca2e2c65b9e2e9c4c6a29c2ff", "sha256": "5b453609bb7a0ab986ec0205638528a83150407ad40bfaa6884eea4aa2780466" }, "downloads": -1, "filename": "pixelink-1.2.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ad5cd01ca2e2c65b9e2e9c4c6a29c2ff", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17222, "upload_time": "2017-09-22T12:38:56", "url": "https://files.pythonhosted.org/packages/74/2d/0ad02afae25690a83d4077eaaa022cc290a295f5cfc17ea6ac679f836e07/pixelink-1.2.8-py2.py3-none-any.whl" } ], "1.2.9": [ { "comment_text": "", "digests": { "md5": "1ada42a6fd62e58ee26d452dd183e823", "sha256": "f558652a8b93ed0e0b9ddb6a7a5f12208c31d9b76a859edac875a073922231a2" }, "downloads": -1, "filename": "pixelink-1.2.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ada42a6fd62e58ee26d452dd183e823", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17262, "upload_time": "2017-09-22T12:46:41", "url": "https://files.pythonhosted.org/packages/fd/c3/1620a88eaec74d99b9c9898681489ffd5ac541f4010dab2cc2d7ccc80842/pixelink-1.2.9-py2.py3-none-any.whl" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "a7fd9e6f26f03b642d05ce3a174ffa94", "sha256": "37dba45e46cf6f94b706a18196f9d0f3fcef2882e44f2c9a23d6c5178dad9a44" }, "downloads": -1, "filename": "pixelink-1.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a7fd9e6f26f03b642d05ce3a174ffa94", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 18843, "upload_time": "2017-09-29T08:01:19", "url": "https://files.pythonhosted.org/packages/33/be/7d3961312e27a652dc8fa2efbc877ead78b9983c6f3ad6df2ae8b666968d/pixelink-1.3.0-py2.py3-none-any.whl" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "2958cb184db6504dc4e33ee0d092bd44", "sha256": "2d2fa6b5d0a24c5eca5894bc0fccb58f992db1de40d26a96f6d24c070c1b0122" }, "downloads": -1, "filename": "pixelink-1.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "2958cb184db6504dc4e33ee0d092bd44", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 19801, "upload_time": "2017-10-02T10:49:42", "url": "https://files.pythonhosted.org/packages/24/39/dfde97189f70949c716922d0f42a2b1d075f50b300e4dfc0db2ec2d6c86a/pixelink-1.3.1-py2.py3-none-any.whl" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "0ad7cf426651d2b7e07760e40837c700", "sha256": "7d22577e9600174c8f3bc5ed0487ea9922be6ed5637a9d24287144712b1b4128" }, "downloads": -1, "filename": "pixelink-1.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ad7cf426651d2b7e07760e40837c700", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 20031, "upload_time": "2018-04-16T07:11:05", "url": "https://files.pythonhosted.org/packages/21/86/eb38359772ae2c71311bf99002ab86fd0b47c81cbd408f588350a0cfc2be/pixelink-1.3.2-py2.py3-none-any.whl" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "b5631751abf928dc38041b9da6a390f1", "sha256": "042524f4e6dbbee7f25c4136ad758ad3660cf939b26e1a82f7cd92b822eec5af" }, "downloads": -1, "filename": "pixelink-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b5631751abf928dc38041b9da6a390f1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17710, "upload_time": "2018-08-01T10:40:17", "url": "https://files.pythonhosted.org/packages/21/74/7c8f757c53510897dec433b16614af99107fb126c5344e18ab0782a1163e/pixelink-1.4.0-py2.py3-none-any.whl" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "b5631751abf928dc38041b9da6a390f1", "sha256": "042524f4e6dbbee7f25c4136ad758ad3660cf939b26e1a82f7cd92b822eec5af" }, "downloads": -1, "filename": "pixelink-1.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b5631751abf928dc38041b9da6a390f1", "packagetype": "bdist_wheel", "python_version": "3.6", "requires_python": null, "size": 17710, "upload_time": "2018-08-01T10:40:17", "url": "https://files.pythonhosted.org/packages/21/74/7c8f757c53510897dec433b16614af99107fb126c5344e18ab0782a1163e/pixelink-1.4.0-py2.py3-none-any.whl" } ] }