You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将热成像图中低于特定阈值的区域设为透明后叠加到RGB摄像头画面

实现方案

核心思路是基于原始灰度热成像图生成二值化掩码,直接用掩码控制热成像像素的拷贝,无需使用统一透明度的加权融合,刚好满足低温完全透明、高温完全不透明的需求。

实现步骤

  • 第一步:保留原始的灰度热成像图(不要直接覆盖为彩色图),设置对应温度的灰度阈值,生成二值掩码。低于阈值的区域掩码值为0,高于阈值的区域掩码值为255。
  • 第二步:将灰度热成像转换为彩色热成像图。
  • 第三步:使用cv2.copyTo方法,基于掩码只把高温区域的彩色热成像像素复制到RGB背景的对应区域。

示例代码

# 假设thermal_gray为原始输出的灰度热成像图,foreground_height/foreground_width为热成像图尺寸
threshold_val = 120  # 可根据实际温度对应灰度值调整,值越高保留的高温区域越少

# 生成二值掩码:低于阈值的区域为0(透明),高于阈值的区域为255(不透明)
ret, mask = cv2.threshold(thermal_gray, threshold_val, 255, cv2.THRESH_BINARY)

# 灰度热成像转彩色
thermal_colored = cv2.applyColorMap(thermal_gray, cv2.COLORMAP_HOT)

# 取背景图对应热成像尺寸的ROI区域
background_roi = background[:foreground_height, :foreground_width, :]

# 仅将掩码为255的热成像像素复制到背景ROI上
cv2.copyTo(thermal_colored, mask, background_roi)

# 直接显示最终合成画面
cv2.imshow('composited image', background)

调整说明

你可以根据实际需求调整threshold_val的数值:如果想要保留更高温度的区域,就调高阈值;想要保留更多温度偏高的区域,就调低阈值。如果热成像输出不是8位灰度范围,需要先将灰度值映射到0-255范围再做阈值处理。

内容的提问来源于stack exchange,提问作者yoyo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 07:18:03