{"id":21944494,"url":"https://github.com/jbtronics/irimageparser","last_synced_at":"2025-10-10T00:32:14.067Z","repository":{"id":264537458,"uuid":"893623434","full_name":"jbtronics/IRImageParser","owner":"jbtronics","description":"A python library to parse the JPG files saved by the HTI HD-04D / Tooltop ET692B Thermal Camera","archived":false,"fork":false,"pushed_at":"2024-12-25T17:53:44.000Z","size":227,"stargazers_count":6,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-30T07:44:20.888Z","etag":null,"topics":["parser","python","thermal-camera","thermal-imaging"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jbtronics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-24T22:39:52.000Z","updated_at":"2025-05-12T19:37:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"5f047d1d-7cd2-4fa0-adbb-57097449c11d","html_url":"https://github.com/jbtronics/IRImageParser","commit_stats":null,"previous_names":["jbtronics/irimageparser"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jbtronics/IRImageParser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbtronics%2FIRImageParser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbtronics%2FIRImageParser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbtronics%2FIRImageParser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbtronics%2FIRImageParser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jbtronics","download_url":"https://codeload.github.com/jbtronics/IRImageParser/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jbtronics%2FIRImageParser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002358,"owners_count":26083356,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["parser","python","thermal-camera","thermal-imaging"],"created_at":"2024-11-29T04:16:29.680Z","updated_at":"2025-10-10T00:32:13.726Z","avatar_url":"https://github.com/jbtronics.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IRImageParser\n\nThis library (and tool) allows to parse the data contained in the JPG files created by the thermalcameras of HTI (HTI-Xintai)\nThey are a OEM whose cameras get sold often under different branch. The library is written in Python and can be used to process the data in the JPG file for\nfurther analysis. Some little demo program is included, to show what data can be extracted.\n\n## Supported cameras\n \nThe library has been tested with the following cameras:\n* HT-04D (also sold as Tooltop ET692B)\n* HT-19\n\nProbably it will work with other thermal cameras from HTI as well. If your camera pictures can be opened by the `IRImageTools`\nsoftware, its possible that the library will work with your camera as well.\n\n## Data format\nThe cameras store a JPG file which contains the screenshot shown on the camera in any normal image viewer.\n\nAfter the image data, the JPG files contains another JPEG image, which contains the visible picture without any overlays.\nAfterwards an raw byte array containing the temperature data and a grayscale representation of the temperature between\nmin and max temperature.\nIn the end of the file various metadata is stored like model number, firmware version, min, max and center temperature,\nemissivity, the used color palette, mixing factor and the temperature unit.\n\nAll of this data can be extracted by the library and used for further analysis, to exceed the capabilities of the normal\nanalysis software.\n\nThe file format was reversed engineered from the firmware of a HT-04D thermal camera using ghidra.\n\nThe maximum and minimum points in the temperature arrays are different from the ones calculated by the camera. This\nis because the camera (and IRImageTools) performs averaging over a 3x3 grid to get the temperature of the pixed.\n\n## Installation\n\nThe library itself requires `pillow` and `numpy` to be installed. The main program requires `matplotlib` to be installed as well. alignTemp.py requires 'tk' and 'matplotlib'  \n\nYou can install the library via pip:\n\n```bash\npip install -r requirements.txt\n```\n\n## Usage\n\nThe library can be used to extract the data from the JPG file. The data is stored in the `ThermoImage` object in the thermo\npackage. The `ThermoImage` object contains the raw data, the temperature data and the image data.\n\nThe `main.py` script in the root folder allows to open a JPG file and display the data in a very simple way. The script\ncan be used as follows:\n\n```bash\npython main.py \u003cpath_to_jpg_file\u003e\n```\n\nIt will show metadata, the mixed and visible image and temperature plots.\n\nA demo picture is included in the `demo` folder.\n\nYou will get some output like this (and the pictures shown):\n\n```\n====== Picture info =======\nCamera: HT-04D (Firmware 2.5.1)\nThermal resolution: 120x160\nVisible resolution: 240x320\nCapture time: 2024-11-21 01:06:39\n\nCenter: 25.4 °C (x=120, y=160)\nMin temperature: 13.8 °C (x=234, y=236)\nMax temperature: 26.1 °C (x=118, y=198)\n\nPalette: SPECTRA\nEmissivity: 0.95\nUnit: CELSIUS\nMixing factor: 0\nImage margins: (0, 0, 0, 0)\n===========================\n```\n\n### Convert JPG files to IRG files\nThis library includes a small script to convert the JPG files of the HTI cameras to the IRG format used by the Infiray,\nTopdon and Vevor Thermal cameras. This allows you to analyze the data with the Infiray IR Discovery software or the [Topdon\nTDView for TC005](https://www.topdon.com/pages/pro-down?fuzzy=TC005) software, which is better than the HTI IRImageTools.\n\nYou can pass  files or whole folders containing JPG files from the HTI camera to the script. The script will create a IRG\nfile alongside the JPG files. Both JPG and IRG files are required to be in the same folder, so the IR Discovery software\ncan open it.\n\nAs visible and thermal images must have the same resolution, the script will upscale the thermal image to the visible\nresolution by doubling the pixels.\n\n```bash\n# Convert a single JPG file to IRG\npython to_irg.py file.jpg\n\n# Convert all JPG files in the folder to IRG files\npython to_irg.py folder_with_jpg_files/\n```\n\nThis script does not touch the JPG file, so it remains usable with the HTI software. However, the IR Discovery software\nmight overwrite the JPG file with its own version, so you probably want to keep a backup of the original JPG files.\n\nThis script was only possible with the reverse engineering work done by [@jelle737](https://github.com/jelle737/Vevor-Thermal-Utilities/tree/main)\nand [@jaseg](https://github.com/jaseg/infiray_irg). They wrote parser software for the IRG files, which allowed me to\nwrite a file writer for it.\n\n### Align visible temperature range within one folder\nalignTemp.py\nusage: python alignTemp.py [your/directory/path] [yourCMAP]\nstarted without arguments a dialog is asking for a directory with Thermalimages\nImporting ignores all JPG files that start with an '_', as exported pure JPG are named like this.\n\nIt shows a collage of all the pictures with the settings \"minimum temperatures\" and \"maximum temperatures\"\nThere is a GUI where you can set temperatures for minimum and maximum, CMAP is the color coding used.\nChanges will be displayed in a new collage when you click on the Show button.\n\nYou can export the images with the current setting as \"_minTemp-maxTemp\u003coriginal name\u003e.jpg\". \nThe script exports to the same folder where the original thermal images are located.\n\n\n## License\nThis library is licensed under the MIT license. That means you can use this library for any purpose free of charge,\nas long as you retain the license information in the source code.\n\nSee the LICENSE file for more information.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbtronics%2Firimageparser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjbtronics%2Firimageparser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjbtronics%2Firimageparser/lists"}