Skip to main content

Minimal radiometric temperature extraction from Hikvision thermal cameras

Project description

hiktemp

Minimal radiometric temperature extraction from Hikvision thermal cameras via ISAPI.
No SDK required. Only depends on requests and numpy.

Install

pip install hiktemp

Or from source:

git clone https://github.com/xynogen/hiktemp
cd hiktemp
pip install -e .

Usage

from hiktemp import hiktemp

frame = hiktemp("http://192.168.1.1", "admin", "password")

frame.matrix          # np.ndarray (H, W) float32 — per-pixel °C
frame.jpeg            # bytes — raw JPEG from camera (AGC, display only)
frame.meta            # dict  — camera descriptor
frame.min             # float — global min °C
frame.max             # float — global max °C
frame.mean            # float — global mean °C
frame.std             # float — global std °C
frame.hotspot()       # (row, col) — global hotspot
frame.coldspot()      # (row, col) — global coldspot

# band filter — lo/hi passed at call time
frame.hotspot(lo=28, hi=29)    # hotspot within band
frame.coldspot(lo=28, hi=29)   # coldspot within band
frame.masked(lo=28, hi=29)     # matrix with out-of-band pixels = NaN
frame.alpha(lo=28, hi=29)      # float32 (H,W) quintic smoothstep mask 0–1

Visualization is left to the caller:

import matplotlib.pyplot as plt

plt.imshow(frame.matrix, cmap="inferno")
plt.colorbar(label="°C")
plt.show()

# with band mask — color from temperature, transparency from mask
import numpy as np
import matplotlib.pyplot as plt

norm = (frame.matrix - frame.matrix.min()) / (frame.matrix.max() - frame.matrix.min())
rgba = plt.get_cmap("inferno")(norm)       # color mapped from temperature
rgba[:, :, 3] = frame.alpha(lo=28, hi=29)  # alpha from band mask
plt.imshow(rgba)
plt.show()

Reuse session for continuous polling — once authenticated, no need to pass credentials again:

import requests
from requests.auth import HTTPDigestAuth

session = requests.Session()
session.auth = HTTPDigestAuth("admin", "password")

while True:
    frame = hiktemp("http://192.168.1.1", session=session)
    print(frame.hotspot())

Requirements

  • Python >= 3.10
  • requests >= 2.28
  • numpy >= 1.23

Tested on

  • DS-2TD2138-10/QY (384×288, float32 °C, channel 1)

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

hiktemp-0.2.0.tar.gz (10.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hiktemp-0.2.0-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file hiktemp-0.2.0.tar.gz.

File metadata

  • Download URL: hiktemp-0.2.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hiktemp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 7cfb755a46822aaf9d1e155eb981f9c1de5d67db306111112d90e33142e2c526
MD5 9bd3e20bb9619b36f6ac82dec6280fb0
BLAKE2b-256 19ec1f39e2285461151c863817be09197864c7252c596822c8a016cd89a469b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for hiktemp-0.2.0.tar.gz:

Publisher: publish.yml on xynogen/hiktemp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file hiktemp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: hiktemp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for hiktemp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bab07b0318e241baf9ecc9d8fdf6224b076612e5b2bd5d9b25b97e5cd386949d
MD5 90557f0b7defffe298e4ee552ca05ca5
BLAKE2b-256 eb96fb18fc46f988f7f28690416de2905c0d93fea1e9982a015fbcbd52f1dbbe

See more details on using hashes here.

Provenance

The following attestation bundles were made for hiktemp-0.2.0-py3-none-any.whl:

Publisher: publish.yml on xynogen/hiktemp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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