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

Jetson Nano摄像头Python读取失败:问题排查与解决方法

问题分析与解决

你的Python代码无法调用摄像头的核心问题有两个:

  • 代码里用的是videotestsrc(测试视频源),并非实际调用Jetson Nano摄像头的nvarguscamerasrc
  • GStreamer管道没有适配Jetson的硬件加速格式,也没有转换成OpenCV能识别的图像格式

正确的解决方案

替换代码中的GStreamer管道,使用适配Jetson硬件的摄像头源和格式转换逻辑,完整代码如下:

import sys
import cv2

def read_cam():
    # 适配Jetson Nano的GStreamer管道:调用摄像头硬件加速源,转成OpenCV支持的BGR格式
    G_STREAM_TO_SCREEN = (
        "nvarguscamerasrc ! "
        "video/x-raw(memory:NVMM),width=1280,height=720,framerate=30/1,format=NV12 ! "
        "nvvidconv flip-method=0 ! "
        "video/x-raw,format=BGRx ! "
        "videoconvert ! "
        "video/x-raw,format=BGR ! "
        "appsink"
    )
    cap = cv2.VideoCapture(G_STREAM_TO_SCREEN, cv2.CAP_GSTREAMER)
    if cap.isOpened():
        cv2.namedWindow("demo", cv2.WINDOW_AUTOSIZE)
        while True:
            ret_val, img = cap.read()
            if not ret_val:
                break
            cv2.imshow('demo', img)
            # 按q退出循环
            if cv2.waitKey(1) & 0xFF == ord('q'):
                break
    else:
        print("Unable to use pipeline")

    cap.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    read_cam()

管道各部分说明

  • nvarguscamerasrc:Jetson平台专用的摄像头硬件加速采集源,对应你之前成功的gst命令中的源
  • video/x-raw(memory:NVMM)...:指定采集的分辨率、帧率和NV12格式(硬件加速内存中的格式)
  • nvvidconv flip-method=0:使用硬件加速的格式转换器,flip-method可根据摄像头安装方向调整(0-6可选)
  • video/x-raw,format=BGRx:转成BGRx格式,再通过videoconvert转成OpenCV默认的BGR格式
  • appsink:将视频帧输出给OpenCV的VideoCapture读取

额外检查项

  • 确保你的OpenCV是编译时支持GStreamer的(Jetson官方镜像中的OpenCV默认已支持)
  • 运行代码时不要有其他程序占用摄像头(比如之前的gst-launch命令要先关闭)
  • 若仍有问题,可尝试降低分辨率(比如640x480)测试

内容的提问来源于stack exchange,提问作者e.iluf

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:50:21