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

Jetson Orin Nano上CSI摄像头终端可用但Python脚本无法打开求助

解决Jetson Orin Nano上OpenCV无法调用CSI摄像头的问题

问题背景

在Jetson Orin Nano设备上,终端执行GStreamer命令可正常调用CSI摄像头:

gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1' ! nvvidconv ! nvegltransform ! nveglglessink -e

但运行以下Python OpenCV脚本时无法打开摄像头:

import cv2

cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=1280, height=720, framerate=30/1 ! nvvidconv ! video/x-raw, format=BGRx ! videoconvert ! video/x-raw, format=BGR ! appsink")

while True:
    ret, frame = cap.read()
    if not ret:
        print("Unable to capture camera image")
        break

    cv2.imshow("CSI Camera", frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

执行脚本后输出报错:

onur@ubuntu:~/Desktop/Project$ /bin/python /home/onur/Desktop/Project/simple_camera.py
nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, framerate=(fraction)30/1 ! nvvidconv flip-method=0 ! video/x-raw, width=(int)960, height=(int)540, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink
Error: Unable to open camera

排查发现当前OpenCV编译时未启用GStreamer支持,执行import cv2; print(cv2.getBuildInformation())输出:

Video I/O:
    DC1394:                      NO
    FFMPEG:                      YES
      avcodec:                   YES (59.37.100)
      avformat:                  YES (59.27.100)
      avutil:                   YES (57.28.100)
      swscale:                  YES (6.7.100)
      avresample:                NO
    GStreamer:                   NO
    v4l/v4l2:                    YES (linux/videodev2.h)

问题根源就是OpenCV缺少GStreamer支持,无法解析GStreamer管道串。

解决步骤

1. 安装编译依赖

先安装OpenCV编译所需的基础依赖和GStreamer开发库:

sudo apt update && sudo apt install -y \
build-essential cmake git libgtk2.0-dev pkg-config \
libavcodec-dev libavformat-dev libswscale-dev \
libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \
gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
python3-dev python3-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-dev

2. 下载OpenCV及扩展模块源码

建议选择与JetPack版本匹配的OpenCV版本(JetPack 5.x推荐OpenCV 4.5.x):

# 克隆主仓库和扩展模块
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git

# 切换到指定版本(以4.5.5为例)
cd opencv && git checkout 4.5.5 && cd ..
cd opencv_contrib && git checkout 4.5.5 && cd ..

3. 配置编译参数

创建build目录并运行cmake,核心是开启WITH_GSTREAMER和CUDA支持:

mkdir -p opencv/build && cd opencv/build

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_C_EXAMPLES=OFF \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \
-D PYTHON_EXECUTABLE=/usr/bin/python3 \
-D BUILD_EXAMPLES=ON \
-D WITH_GSTREAMER=ON \
-D WITH_LIBV4L=ON \
-D WITH_CUDA=ON \
-D CUDA_ARCH_BIN=8.7 \  # Jetson Orin Nano的算力架构为8.7
-D CUDA_ARCH_PTX="" \
-D OPENCV_GENERATE_PKGCONFIG=ON ..

4. 编译并安装

根据设备CPU核心数调整-j参数(Orin Nano可用-j4):

make -j4
sudo make install
sudo ldconfig

5. 验证安装

重新运行Python代码,或执行以下命令确认GStreamer已启用:

import cv2
print(cv2.getBuildInformation())

查看输出中Video I/O部分的GStreamer是否显示YES。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 11:03:27