{ "info": { "author": "Josh Veitch-Michaelis", "author_email": "j.veitchmichaelis@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# ![logo](logo.png)\n\n![coverage](coverage.svg)\n\nflirpy is a Python library to interact with FLIR thermal imaging cameras and images.\n\nIt aims to be a one-stop-shop to:\n\n* Interact and query cameras via serial\n* Capture raw images\n* Convert FLIR file formats (e.g. seq, fff, tmc, tfc) to geotagged readable images\n* Convert raw images to radiometric images\n* Extract and plot GPS traces from image sequences (e.g. from drones)\n\nThe library has been tested with:\n\n* FLIR Tau (serial only)\n* FLIR Boson (serial and image capture)\n* FLIR Duo Pro R (image post-processing)\n* TeAx Fusion Zoom (image post-processing)\n\nSupport for the Lepton is coming soon, but will probably be limited to the Raspberry Pi for the time being.\n\n**It is strongly recommended that you use Python 3**. I have tried to ensure that certain functions are portable between Python 2 and 3, mainly those involved with camera communication (for example if you want to use flirpy with ROS, most of the important stuff works). However, some file IO is hit and miss on Python 2 due to differences in regexes. Python 2 is effectively end of life and while I'd like to support both, it's a low priority. Submit a PR if you like!\n\n## Library organisation\n\nThe library is organised into logical sections:\n\n* `flirpy.camera` contains classes to communicate with FLIR camera cores directly\n* `flirpy.io` contains claseses to deal with thermal image formats\n* `flirpy.util` contains helper functions e.g. raw conversion\n\n## Utilities\n\nFlirpy includes a convenience utility `split_seqs` for splitting FLIR sequence (SEQ) files.\n\nOnce installed, you can run:\n\n```bash\n$ split_seqs -h\nusage: split_seqs [-h] [-o OUTPUT] -i INPUT [-v VERBOSITY]\n\nSplit all files in folder.\n\noptional arguments:\n -h, --help show this help message and exit\n -o OUTPUT, --output OUTPUT\n Output folder\n -i INPUT, --input INPUT\n Input file mask\n -v VERBOSITY, --verbosity VERBOSITY\n Logging level\n```\n\n`split_seqs` accepts either a directory, a specific filename, or a wildcard string (e.g. `\"./my/data/flight_*.SEQ\"`). If you use wildcards, be sure to enclose the argument in quotes, otherwise your shell will expand the wildcard before running the program and confuse it. If you specify a directoy, all SEQ files in that diretory will be used.\n\nFiles will be extracted to folders with the same base name as the SEQ file, for example `20180101_1030.SEQ` will be extracted to `20180101_1030`, etc. By default the splitter will three kinds of files, separated by subfolder.\n\n* Raw (FFF) files with metadata text files\n* Radiometric 16-bit tiff images\n* Preview 8-bit RGB representations of the radiometric data\n\nThe tiff images will be geotagged if GPS information is present in the raw data.\n\nOutput images are numbered. If SEQ file 1 contains 1800 frames, the first frame from SEQ file 2 will be numbered 1800.\n\n## Installation\n\nFlirpy has been tested with Python 3 and _may_ work on Python 2. It is always recommended that you install packages inside a virtualenv or Conda environment.\n\nEither install using `pip`:\n\n``` bash\npip install flirpy\n```\n\nOr:\n\n``` bash\npython setup.py install\n```\n\nflirpy is distributed with a copy of [Exiftool](https://sno.phy.queensu.ca/~phil/exiftool/) which is used to extract metadata from certain file formats.\n\n### Installation on ARM (e.g. Raspberry Pi)\n\nFlirpy mostly works well, and has been tested, on the Raspberry Pi. If you're building from scratch, you need to install a few things manually. Try to use Python 3 if you can.\n\nIt's recommended that you first install the Python dependencies using `pip` in combination with [piwheels](https://www.piwheels.org/). For whatever reason, `setuptools` does not find these files, so it will fail if e.g. OpenCV isn't installed already. Once you've set up piwheels (it should be automatic on Raspbian if you've installed pip3) run:\n\n``` bash\npip3 install -r requirements.txt\n```\n\nYou may need to install some dependencies for OpenCV, for example `libjasper-dev`.\n\nYou should also install Exiftool manually with `sudo apt install exiftool`.\n\n## Tests\n\nTo run the test suite, install `pytest` and run:\n\n``` bash\npytest --cov=flirpy test\n```\n\nSome tests are hardware dependent, e.g. for cameras, so expect them to fail unless you own and have a camera to try them with. Hardware tests are skipped by default if the requisite camera is not plugged in.\n\nThe repository includes some small representative examples of image files (e.g. SEQ). It is tested and is routinely used with flight data from FLIR Duo cameras, so larger files aren't a problem, but they're too large to include in the repository.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "flirpy", "package_url": "https://pypi.org/project/flirpy/", "platform": "", "project_url": "https://pypi.org/project/flirpy/", "project_urls": null, "release_url": "https://pypi.org/project/flirpy/0.0.4/", "requires_dist": [ "pyserial", "opencv-python-headless", "tqdm", "numpy" ], "requires_python": "", "summary": "", "version": "0.0.4" }, "last_serial": 5867032, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "c336f36784ece62bcbae57f7b35f9066", "sha256": "fffab57e380dd476223f20e2a019aa639b4132fcfcf07fd72df7e0ce8d87dcce" }, "downloads": -1, "filename": "flirpy-0.0.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c336f36784ece62bcbae57f7b35f9066", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10161108, "upload_time": "2019-09-21T19:45:34", "url": "https://files.pythonhosted.org/packages/2e/45/a8558c9ec71f178df836d69270afd13563ea7275d07a61b59c95ec2ac741/flirpy-0.0.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5bdb92a9578358d32958bed7092fb26f", "sha256": "36eb99bb7c33820218c35d777b9c91fc9d7e127c42f18a932b833fb5f3648800" }, "downloads": -1, "filename": "flirpy-0.0.1-py3.7.egg", "has_sig": false, "md5_digest": "5bdb92a9578358d32958bed7092fb26f", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 10154081, "upload_time": "2019-09-21T19:45:57", "url": "https://files.pythonhosted.org/packages/e2/71/608200b30c98a0cb269d3b8f5752f726d86cf79a530dc88190d3415b7e17/flirpy-0.0.1-py3.7.egg" }, { "comment_text": "", "digests": { "md5": "418a19690616fe4ffaf08a6fd2a3ea45", "sha256": "005433134b636a701c365b1d5b57ddbd93ec98507078da048d4d6ce1ab840825" }, "downloads": -1, "filename": "flirpy-0.0.1.tar.gz", "has_sig": false, "md5_digest": "418a19690616fe4ffaf08a6fd2a3ea45", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9614337, "upload_time": "2019-09-21T19:46:18", "url": "https://files.pythonhosted.org/packages/c3/d3/76ba2a822164e68111a75fc7172ca17ab90d19dfccae7c6e356a51b18e37/flirpy-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "f286e3377b75183f4cd30da615592b95", "sha256": "da95e62d89c82e27c036d4a2df1a4520f4c921565ee1ca18b449818945adb3f9" }, "downloads": -1, "filename": "flirpy-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f286e3377b75183f4cd30da615592b95", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10161111, "upload_time": "2019-09-21T19:56:39", "url": "https://files.pythonhosted.org/packages/50/08/731765467c31972fbf3003de8ceef6e74766e5c175777ddebee79edb8c88/flirpy-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d64d1bf6188572a8fbe510cbe8c42840", "sha256": "2963107757e09766a26187f8452366fbab570d75d15b5ce91b781266039bbe0d" }, "downloads": -1, "filename": "flirpy-0.0.2.tar.gz", "has_sig": false, "md5_digest": "d64d1bf6188572a8fbe510cbe8c42840", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9614322, "upload_time": "2019-09-21T19:57:01", "url": "https://files.pythonhosted.org/packages/8f/32/523d519e9e6e646fe20369c4a062117d49f896bac8d213814b4e419bfd91/flirpy-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "c72b002eba8b60b050350623f797b4a4", "sha256": "17a21e110889f4845473af2e49d76dc2f85925f6ada70661bd5fd88dde9556eb" }, "downloads": -1, "filename": "flirpy-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c72b002eba8b60b050350623f797b4a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10160746, "upload_time": "2019-09-21T20:03:47", "url": "https://files.pythonhosted.org/packages/3b/75/282ce7a291525349342b25cecd7510005eb98e7d5698d04e33088f1e75d5/flirpy-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db18f415e27f2355ec62d96d863ca601", "sha256": "c516deb7ff0f288bac6bb5ca675391b6e385a57beed0524104b0eec02d71d17f" }, "downloads": -1, "filename": "flirpy-0.0.3-py3.7.egg", "has_sig": false, "md5_digest": "db18f415e27f2355ec62d96d863ca601", "packagetype": "bdist_egg", "python_version": "3.7", "requires_python": null, "size": 10153219, "upload_time": "2019-09-21T20:04:09", "url": "https://files.pythonhosted.org/packages/d0/0a/8e24ee6c60c961dfa1011cf54201102c4662185189c0913c42751cf512e5/flirpy-0.0.3-py3.7.egg" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "82f55f0d6fb83e18bc101383139409b5", "sha256": "8f90213ba5e000c53a8cfd0fd372ed903ec0b72d289889a7845eacc5de226a91" }, "downloads": -1, "filename": "flirpy-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82f55f0d6fb83e18bc101383139409b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10160746, "upload_time": "2019-09-21T20:05:46", "url": "https://files.pythonhosted.org/packages/e1/6d/c96401ff91bd6e7037d3310516530dc155ed74699d63aa81a3dd88cdeb51/flirpy-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b88abce65127a1f317cfe22110e5319d", "sha256": "4fcd7ca5b2fc32a06390519a393ca5cb21d092ec8b60fbae8e8b7d8a05108e65" }, "downloads": -1, "filename": "flirpy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b88abce65127a1f317cfe22110e5319d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9614340, "upload_time": "2019-09-21T20:06:08", "url": "https://files.pythonhosted.org/packages/bf/5e/9d19b707bad7620c581011abd568ce3896b9e7a40b19701bc831d9b9cbb4/flirpy-0.0.4.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "82f55f0d6fb83e18bc101383139409b5", "sha256": "8f90213ba5e000c53a8cfd0fd372ed903ec0b72d289889a7845eacc5de226a91" }, "downloads": -1, "filename": "flirpy-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "82f55f0d6fb83e18bc101383139409b5", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10160746, "upload_time": "2019-09-21T20:05:46", "url": "https://files.pythonhosted.org/packages/e1/6d/c96401ff91bd6e7037d3310516530dc155ed74699d63aa81a3dd88cdeb51/flirpy-0.0.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b88abce65127a1f317cfe22110e5319d", "sha256": "4fcd7ca5b2fc32a06390519a393ca5cb21d092ec8b60fbae8e8b7d8a05108e65" }, "downloads": -1, "filename": "flirpy-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b88abce65127a1f317cfe22110e5319d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9614340, "upload_time": "2019-09-21T20:06:08", "url": "https://files.pythonhosted.org/packages/bf/5e/9d19b707bad7620c581011abd568ce3896b9e7a40b19701bc831d9b9cbb4/flirpy-0.0.4.tar.gz" } ] }