Python library for reading Fluke thermal imaging files (.is2; .is3 planned)
Project description
Fluke Thermal Reader
A Python library for reading and analyzing Fluke thermal imaging files in .is2 format.
Package: fluke-thermal-reader · Import: import fluke_thermal_reader or from fluke_thermal_reader import read_is2
Features
- .is2 reading: Full parsing of Fluke thermal imaging files (.is2)
- Temperature conversion: Raw counts to temperature (°C) with emissivity and reflected background correction (radiative formula)
- Metadata: Camera model, dimensions, emissivity, transmission, background temperature, min/max/avg from file and from JSON when present
- Minimal dependencies: Only
numpy - Tested and working: Fluke Ti480P and Ti300
Installation
From PyPI (when published)
pip install fluke-thermal-reader
From source (development or local release)
From the repository root:
pip install -e .
Or in non-editable mode:
pip install .
Quick start
from fluke_thermal_reader import read_is2
# Load a .is2 file
data = read_is2("thermal_image.is2")
# Thermal matrix (2D, °C)
thermal_data = data["data"]
print(f"Temperature range: {thermal_data.min():.1f}°C - {thermal_data.max():.1f}°C")
# Metadata
print(f"Camera: {data['CameraModel']}")
print(f"Size: {data['size']}") # [width, height]
print(f"Emissivity: {data['Emissivity']}")
print(f"Background temperature: {data['BackgroundTemp']}°C")
Plot with matplotlib
import matplotlib.pyplot as plt
from fluke_thermal_reader import read_is2
data = read_is2("thermal_image.is2")
plt.imshow(data["data"], cmap="coolwarm", aspect="equal")
plt.colorbar(label="Temperature (°C)")
plt.title(f"Thermal image — {data['CameraModel']}")
plt.show()
Returned data structure (read_is2)
| Key | Type | Description |
|---|---|---|
data |
2D ndarray | Temperature in °C per pixel |
FileName |
str | File name |
CameraModel |
str | Thermal camera model |
CameraSerial |
str | Serial number |
size |
[w, h] | Image dimensions |
MinTemp, MaxTemp, AvgTemp |
float | From file/JSON when present |
Emissivity |
float | Emissivity |
Transmission |
float | Transmission |
BackgroundTemp |
float | Background temperature |
thumbnail_path |
str / None | Thumbnail path (if present) |
photo_path |
str / None | Visible photo path (if present) |
Requirements
- Python 3.8+
numpy >= 1.20.0
For visualization: matplotlib (optional).
Tested camera models
Tested and working with:
- Fluke Ti480P
- Fluke Ti300
Other Fluke .is2 files may work; feedback and sample files for additional models are welcome.
Project structure
Fluke_Python/
├── fluke_thermal_reader/ # Main package
│ ├── __init__.py
│ ├── reader.py # read_is2, FlukeReader
│ ├── parsers.py # IS2 parser
│ ├── utilities.py # UnitConversion, calc_equation
│ ├── models.py
│ └── cli.py
├── examples/ # Usage examples
├── tests/ # Tests
├── pyproject.toml
├── requirements.txt
└── README.md
Development and testing
# Editable install
pip install -e ".[dev]"
# Run tests
pytest
Publishing to PyPI
-
Install build tools
pip install build twine
-
Bump version in
pyproject.tomlandfluke_thermal_reader/__init__.py(e.g.0.2.1). -
Build the package (from repo root)
python -m build
This creates
dist/with a.tar.gz(sdist) and a.whl(wheel). -
Check archives (optional)
twine check dist/*
-
Upload to PyPI
twine upload dist/*
Use your PyPI credentials (create an API token at pypi.org/manage/account/token/; username
__token__, password = token).
After upload, users can install with:
pip install fluke-thermal-reader
read_is3 (Future Work)
read_is3(file_path) is planned for Fluke IS3 (video) files.
- Current status: Not implemented — calling it raises
NotImplementedError. - Scope: Video streams (multiple thermal frames), video-level metadata.
- Documentation: The returned data structure will be defined once implementation starts.
If you are interested in IS3 support, please open an issue with sample files and requirements.
License
See the LICENSE file in the repository.
Changelog
0.2.0
- Stable .is2 parser with temperature conversion (emissivity + background temperature)
0.1.x
- Initial release, basic .is2 support
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fluke_thermal_reader-0.2.0.tar.gz.
File metadata
- Download URL: fluke_thermal_reader-0.2.0.tar.gz
- Upload date:
- Size: 21.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1c0e20446fb78142b8244eaba5d8757384fc697544696f312eb0c4267ea3ee0
|
|
| MD5 |
1e986b07f1a718d7268c1cc87a59b4ea
|
|
| BLAKE2b-256 |
5bc9a759eede2e6f41f9f2f55a9de806c6ea1d2665abc2b42fb782e5166967d0
|
File details
Details for the file fluke_thermal_reader-0.2.0-py3-none-any.whl.
File metadata
- Download URL: fluke_thermal_reader-0.2.0-py3-none-any.whl
- Upload date:
- Size: 14.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f6ce92b53465ec9e669d67b5a900994f78396d64ad6fe3cda1e2bc182efae44
|
|
| MD5 |
3db50c4c8c719838129e3d6d4cd16e39
|
|
| BLAKE2b-256 |
2137ea039e6f5b3d820526ace0e25ecfdf6879317391783e9ebaa7ca3ea981c6
|