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

Python3环境下Jetson Nano对接LEPTON FLIR相机分辨率调整求助

问题根因

Lepton FLIR热像仪的底层驱动默认固定输出160×120分辨率,OpenCV的VideoCapture.set()指令无法直接修改摄像头输出参数,所以硬改采集参数不会生效,需要在拿到采集帧之后手动做缩放处理。

修改步骤

你只需要对现有代码做3处调整即可实现目标分辨率输出:

  1. 自定义目标分辨率,替换原有从摄像头读取宽高的逻辑
  2. 每次采集到帧之后先做缩放,再执行后续的ROI选点、推理、渲染逻辑
  3. 选择合适的插值算法保证热成像画面放大后的效果
具体代码修改

找到calculate_social_distancing函数,做如下调整:

def calculate_social_distancing(vid_path, net, output_dir, output_vid, ln1):
    
    count = 0
    vs = cv2.VideoCapture(0)

    # -------------------- 新增修改开始 --------------------
    # 定义目标分辨率
    TARGET_W = 640
    TARGET_H = 480
    # 仅读取fps参数,宽高用自定义的目标值
    fps = int(vs.get(cv2.CAP_PROP_FPS))
    width = TARGET_W
    height = TARGET_H
    # -------------------- 新增修改结束 --------------------
    
    # Set scale for birds eye view
    # Bird's eye view will only show ROI
    scale_w, scale_h = utills.get_scale(width, height)

    fourcc = cv2.VideoWriter_fourcc(*"XVID")
    output_movie = cv2.VideoWriter("./output_vid/distancing.avi", fourcc, fps, (width, height))
    bird_movie = cv2.VideoWriter("./output_vid/bird_eye_view.avi", fourcc, fps, (int(width * scale_w), int(height * scale_h)))
        
    points = []
    global image
    
    while True:

        (grabbed, frame) = vs.read()

        if not grabbed:
            print('here')
            break
            
        # -------------------- 新增修改开始 --------------------
        # 对原生采集的160×120帧做缩放,INTER_CUBIC插值适合画面放大,追求性能可以换成INTER_LINEAR
        frame = cv2.resize(frame, (TARGET_W, TARGET_H), interpolation=cv2.INTER_CUBIC)
        # -------------------- 新增修改结束 --------------------
            
        (H, W) = frame.shape[:2]
        
        # 后续原有逻辑完全不用修改
        # first frame will be used to draw ROI and horizontal and vertical 180 cm distance(unit length in both directions)
        if count == 0:
            while True:
                image = frame
                cv2.imshow("image", image)
                cv2.waitKey(1)
                if len(mouse_pts) == 8:
                    cv2.destroyWindow("image")
                    break
        # ...... 剩余原有代码保持不变即可
性能优化建议

如果运行时出现卡顿,可做如下调整:

  • 将缩放的插值算法从cv2.INTER_CUBIC换成cv2.INTER_LINEAR,速度提升30%以上,热成像画面损失极小
  • 若你使用的是Jetson Nano定制版OpenCV,可启用GStreamer后端采集,配合硬件加速缩放进一步降低CPU占用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:45:03