• Stars
    star
    169
  • Rank 224,453 (Top 5 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 2 years ago
  • Updated 11 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A viewer and API for the InfiRay P2 Pro thermal camera module

InfiRay P2 Pro Viewer

โš ๏ธ [WIP]
See below for a roadmap.

This project aims to be an open-source image viewer and API for the InfiRay P2 Pro thermal camera module.

The communication protocol was reverse-engineered, to avoid needing to include the proprietary precompiled InfiRay libraries.

Disclaimer: This is my first big Python multi-module project. So there are bound to be horrific architectural decisions and many other beginner's mistakes. Please excuse that.
The premise is to get to the first milestone with as little premature optimization as possible, otherwise I would never arrive there.

Notices

Windows

For sending vendor control transfers to the UVC camera in addition to opening the camera as a normal UVC camera, libusb needs to be installed as an upper filter driver.
This can be installed relatively easily using Zadig.

  • Options > List all devices
  • Select "USB Camera (Interface 0)"
  • Scroll to "libusb-win32" and select "Install filter driver" from the dropdown besides "Replace driver"

Also, the camera video stream needs to be opened first before using the script to send commands to it, otherwise the call to libusb will just hang for whatever reason.

Linux

Still needs to be tested, but should workโ„ข

Where to buy

The cheapest vendor in Germany appears to be Peargear.
Pergear also has an international shop for other countries, but I'm not sure if they're the cheapest there.

Additional Resources

Roadmap

  • USB Vendor Commands
    • Read/Write commands
      • "standard" cmd
      • "long" cmd
      • wait for camera ready
    • Pseudo color
    • NUC shutter control (auto/manual/trigger)
    • High/low temperature range
    • Other parameters (emissivity, distance, etc)
    • Switch to actual raw sensor readings?
    • Recalibrate lens?
    • Remaining (less relevant) commands
  • Recording
    • Still image
      • JPEG and radiometry data in one file
        • Standardized format? R-JPEG?
      • Metadata (rotation, camera settings, location?, etc)
    • Video
      • MKV file with radiometry data as second lossless video track
      • Audio
      • Metadata
      • Rotation (on-the-fly possible? :D)
      • Render overlays into video (scale, min/max/center temps, etc)
      • Timelapse?
      • Min/Max/Center temperature in subtitles? :D
      • Standardized video format? (don't know any)
    • Find / build tool to analyze recordings later (or export to other formats)
    • Virtual webcam output with temperature scale overlays?
  • GUI
    • Display video stream
    • Overlays
      • Temperature scale
      • Min/max/center temperature
      • Cursor hover temperature
    • Palette selection
    • Shutter control
    • Gain selection (camera temperature range)
    • Parameters (emissivity, distance, etc)
    • Recording controls (take picture, start/stop video, recording indicator and time)
    • Image rotation / flip
    • Manually set min/max range (probably need to apply own pseudo color from raw temperature data)
    • Own analysis controls (points, lines, rectangles, etc)
    • Log measurements to CSV
    • Plot measurements
    • ...
  • Documentation
    • How to use
    • USB vendor command protocol
    • My video format (if I don't find a more standardized one)
    • P2Pro Android app JPEG file format, that has radiometry data embedded
  • Very long-term plans:
    • Small device with a socket for the P2 Pro to convert it into a hand-held device
    • Android App

More Repositories

1

FW-EC-DongleHiderPlus

Framework Expansion Card that includes a USB hub to hide a bare dongle inside and still have a USB-A port externally
HTML
309
star
2

Paw-Connect

An alternative PCB pawprint for the Tag-Connect TC2030 pogo pin programming cable
82
star
3

telegram-counter-bot

A simple, easy to use counter bot to keep track of all the amazing things in your Telegram group!
JavaScript
32
star
4

Caution-Hot-PCB-Sign

A simple sign made out of PCB material to indicate if a surface is still hot
24
star
5

Storm2-RevEng

Reverse engineering of the Shargeek Storm2 powerbank
11
star
6

MIDI-Arc-Lighter

Custom PCB for a cheap chinese dual arc lighter so it can play music
C
9
star
7

M590

GSM / GPRS Arduino library for the Neoway M590
C++
8
star
8

ESPHome_Nodes

Collection of my ESPHome Nodes
C++
5
star
9

Arduino-Hoverboard

Aims to manually control the Hoverboard drive chain with an Arduino (no self stable)
C++
5
star
10

SSD1303

Arduino library for OLED displays with SSD1303 controller
C++
4
star
11

gifFlut

GIF and image sender for Pixelflut
Python
4
star
12

LeoDJ-kicad

Contains my custom created components for KiCad
4
star
13

Brose_VM-IIC

Reverse engineering and control of an old flip dot display with Brose VM-IIC controller
C
4
star
14

BlackPhantom-Telegram-Bridge

JavaScript
3
star
15

SHMod24

Smart Home Module NRF24 // All-in-one microcontroller baseboard
3
star
16

PyScreenGrab

Python utility to grab an area on screen and convert it to LED matrix compatible data
Python
3
star
17

StEth32_Artnet2DMX

C++
2
star
18

multiFlut

Python
2
star
19

Fallblatt

C++
2
star
20

ledCollar

C
2
star
21

UntisBot

Node.js Telegram Bot for WebUntis
JavaScript
2
star
22

StEth-Boot

STM32 with W5500 Ethernet Bootloader
C
1
star
23

PocketBike

Software components of the electric conversion of a pocket bike
C
1
star
24

Zigbee-MeterReader

A nRF52840 based Zigbee sensor for measuring power / water / gas usage at the meter
C
1
star
25

NRF24-Remote-Button

A battery powered palm switch that transmits a trigger action to a receiver.
C++
1
star
26

telegramStickerSearch

TypeScript
1
star
27

IoT-in-the-box

A small little box containing an ESP8266 and much IoT goodness
C++
1
star
28

EnergyMeter

Attempt to convert an old ferraris meter to a smart meter
Arduino
1
star
29

SSD1303_Breakout

A breakout board for a specific SSD1303 OLED display
1
star
30

Janitza2Influx

C++
1
star
31

HaltMalKurz-Telegram-Bot

[WIP] Telegram Bot fรผr das Spiel "Halt mal Kurz"
1
star
32

SHMod24-IR_RF_Bridge

Provides a SHMod24 with the ability to send/receive IR/433MHz remote codes
1
star