-4

我正在寻找访问相机热数据的解决方案。好吧,我使用了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()

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

4

1 回答 1

1

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

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

可以在某些相机上“固定”温度范围,但这取决于特定型号。

不仅如此 - 大多数便宜的热像仪根本不处理温度值。

PS哦,我刚刚注意到你相机的确切型号。所以答案甚至更强烈“你不能”。不要指望中国记录不充分的监控硬件具有科学或医疗热像仪的功能。

于 2020-12-27T04:17:27.917 回答