Skip to main content

An efficient GPLv3-licensed Python package for extracting temperature data from FLIR IRT images.

Project description

flirextractor

PyPI GitHub Actions Status PyPI - Python Version Code style: black GitHub: License

An efficient GPLv3-licensed Python package for extracting temperature data from FLIR IRT images.

Differences from existing libraries

There is an existing Python package for extracting temperature values from raw IRT images, see nationaldronesau/FlirImageExtractor. However, it has some issues that I didn't like:

  • Most importantly, it is forked from the UNLICENSED Nervengift/read_thermal.py, so until Nervengift/read_thermal.py#4 is answered, this package cannot be legally used.
  • Secondly, it is quite inefficient, as it runs a new exiftool process for each image, and it converts the temperature for each pixel, instead of using numpy's vectorized math.

Installing

You can install flirextractor from pip.

pip3 install flirextractor

Or, using the python package manger poetry (recommended):

poetry add flirextractor

Make sure you install exiftool as well.

On RHEL, this can be installed via:

sudo yum install perl-Image-ExifTool

On Debian, this can be installed via:

sudo apt update && sudo apt install libimage-exiftool-perl -y

Usage

Each FLIR infrared image is loaded in Celsius as a 2-dimensional numpy.ndarray.

To load data from a single FLIR file, run:

from flirextractor import FlirExtractor
with FlirExtractor() as extractor:
    thermal_data = extractor.get_thermal("path/to/FLIRimage.jpg")

Data can also be loaded from multiple FLIR files at once in batch mode, which is slightly more efficient:

from flirextractor import FlirExtractor
with FlirExtractor() as extractor:
    list_of_thermal_data = extractor.get_thermal_batch(
        ["path/to/FLIRimage.jpg", "path/to/another/FLIRimage.jpg"])

Once you have the numpy.ndarray, you can export the data as a csv with:

import numpy as np
np.savetxt("output.csv", thermal_data, delimiter=",")

You can display the image for debugging by doing:

from PIL import Image
thermal_image = Image.fromarray(thermal_data)
thermal_image.show()

See ./scripts/example.py for more example usage.

Testing

Use the Python package manager poetry to install test dependencies:

poetry install

Then run pytest to run tests.

poetry run pytest

You can run linters with pre-commit:

poetry run pre-commit run --all-files

Acknowledgements

This work was supported by the Engineering and Physical Sciences Research Council [Doctoral Training Partnership Grant EP/R513325/1].

Additionally, many thanks to Glenn J. Tattersall, for their gtatters/Thermimage R package. This work uses an image and adapts part of gtatters/Thermimage under the GPLv3.0 License.

Project details


Download files

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

Source Distribution

flirextractor-1.0.1.tar.gz (22.0 kB view details)

Uploaded Source

Built Distribution

flirextractor-1.0.1-py3-none-any.whl (22.4 kB view details)

Uploaded Python 3

File details

Details for the file flirextractor-1.0.1.tar.gz.

File metadata

  • Download URL: flirextractor-1.0.1.tar.gz
  • Upload date:
  • Size: 22.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/5.3.0-1020-azure

File hashes

Hashes for flirextractor-1.0.1.tar.gz
Algorithm Hash digest
SHA256 3d6668596dfbc6bffedb7e18f3786005c82e02a0297df693f2e26c68f33f5bf1
MD5 eadd3b9bccd4bbd2dce0b69e5381feb4
BLAKE2b-256 b58d555bf888f3f33c18655942f5af6f6714bbc8a0e5e8ec60a85b8f30b5d5bb

See more details on using hashes here.

File details

Details for the file flirextractor-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: flirextractor-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 22.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.5 CPython/3.8.3 Linux/5.3.0-1020-azure

File hashes

Hashes for flirextractor-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 37ff5cbe3b46e466e3c45fd124fe5835205261c33af339b96c3cf3f43af19b03
MD5 d9cdd961141ee97d229e8261dc1ee6d2
BLAKE2b-256 139a2a1e57bcdb52fefc9906a43bd9e5eb2bfedbc23ff2f43cf48dd22fdf0c28

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page