尝试用Python从海康威视摄像头读取热数据

2024-06-26 10:19:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找访问相机热数据的解决方案。我使用了OpenCV,只能得到原始图像。但并没有更多关于温度等过程的数据。我尝试了可用的关于海康威视摄像头的图书馆,并为此在网上冲浪。但我不可能成功。我也尝试了FLIR库,但没有成功

我的第二个解决方案是将RGB转换成温度,但我不知道该如何处理这种过程。我还知道设备温度范围在-20到150度之间

寻找这样的东西:

# cam model: hikvision DS-2TD2615-10

import cv2
import hikvision api library for example

thermal = cv2.VideoCapture()
thermal.open("rtsp://""user:pass@ip:port/Streaming/channels/202/")
ret, frame = thermal.read()

while True:
   ret, frame = thermal.read()

   temp_data = api.read_temperature(frame) # -> array or excel file

   cv2.imshow('frame', frame)  
   if cv2.waitKey(1) & 0xFF == ord('q'):
       break
thermal.release()
cv2.destroyAllWindows()

我的视频输入类似于这张图片,例如,我想通过点击它来了解鼻子有多热: input


Tags: 数据图像importapiread过程解决方案温度
1条回答
网友
1楼 · 发布于 2024-06-26 10:19:12

任何相机的热图像的一般答案-您不能仅将灰度级别(或颜色,如果您已经将pallete应用于图像)转换为温度值。你们需要知道一些和IR矩阵有关的系数。一些软件可能会将这些数据嵌入到图像文件元数据中,但没有相应的标准。此外,如果您在不知情的情况下重新保存图像文件,则可能会丢失该元数据

此外,像普通可见光摄像机一样,红外摄像机可以根据当前图像调整其范围。所以,如果你在房间里拍摄一个人,照片中的最低温度将是22°C(冷墙或地板),最高温度将是37°C(人体最热的部分)。在这种情况下,您将得到256个灰度,覆盖范围为15度,因此黑色为22°С,白色为37°С(请记住比例不是线性的!)。你将相机移到一杯温度为60°C的热茶上,观察灰度与温度变化的关系。因此,您需要获得每一帧的系数

可以“固定”某些摄像机的温度范围,但这取决于具体型号

更重要的是,大多数廉价的热敏相机根本不处理温度值

哦,我刚注意到你相机的确切型号。所以答案更强烈的是“你不能”。不要指望中国的监控硬件有科学或医学热成像的能力

相关问题 更多 >