Jetson Orin Nano 新手避坑指南:从零部署YOLOv5,解决CSI摄像头绿色画面问题
2026/5/29 3:10:01 网站建设 项目流程

Jetson Orin Nano 实战:解决CSI摄像头绿色画面与YOLOv5部署全流程

刚拿到Jetson Orin Nano时,那种兴奋感就像孩子拿到新玩具。但当我兴冲冲地连接CSI摄像头准备跑YOLOv5时,屏幕上却出现了一片诡异的绿色——这恐怕是许多开发者遇到的第一个"欢迎仪式"。本文将带你系统解决这个经典问题,并完成完整的YOLOv5部署。

1. 问题诊断:为什么CSI摄像头显示异常

1.1 硬件与协议差异

CSI摄像头与USB摄像头的工作机制截然不同:

特性CSI摄像头USB摄像头
接口协议MIPI CSI-2USB Video Class (UVC)
数据处理需要专用ISP处理已编码的压缩流
Linux设备/dev/video0/dev/video1
典型分辨率3280×2464 (IMX219)640×480

关键发现:当OpenCV未启用GStreamer支持时,CSI摄像头的数据流无法正确解析,导致绿色画面。

1.2 验证摄像头状态

先确认硬件连接正常:

# 列出视频设备 ls /dev/video* # 测试CSI摄像头 nvgstcapture-1.0

如果看到绿色画面,继续以下诊断:

import cv2 print(cv2.getBuildInformation()) # 检查GStreamer是否为YES

2. 编译支持GStreamer的OpenCV

2.1 卸载冲突包

sudo pip3 uninstall opencv-python sudo apt-get purge libopencv*

2.2 准备编译环境

sudo apt-get update sudo apt-get install -y \ cmake g++ git \ libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev

2.3 编译安装OpenCV 4.5.4

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.4.zip unzip opencv.zip && cd opencv-4.5.4 mkdir build && cd build

关键配置选项:

cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D WITH_GSTREAMER=ON \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN='8.7' \ -D BUILD_EXAMPLES=OFF ..

编译优化技巧:

make -j$(nproc) # 使用所有核心 sudo make install

3. YOLOv5环境部署

3.1 PyTorch for Jetson选择

JetPack 5.1.1对应的正确组合:

wget https://nvidia.box.com/shared/static/ssf2v7pf5i245fk4i0q926hy4imzs2ph.whl -O torch-1.14.0a0+44dac51c.nv23.02-cp38-cp38-linux_aarch64.whl pip3 install torch-1.14.0a0+44dac51c.nv23.02-cp38-cp38-linux_aarch64.whl

3.2 安装YOLOv5

git clone https://github.com/ultralytics/yolov5 cd yolov5 pip3 install -r requirements.txt

测试USB摄像头:

python3 detect.py --source 0 --weights yolov5n.pt

4. DeepStream集成方案

4.1 安装DeepStream 6.2

sudo apt-get install \ libssl1.1 libgstreamer1.0-0 \ gstreamer1.0-plugins-good gstreamer1.0-plugins-bad

下载对应版本的SDK包后:

sudo tar -xvf deepstream_sdk_v6.2.0_jetson.tbz2 -C / cd /opt/nvidia/deepstream/deepstream-6.2 sudo ./install.sh

4.2 配置CSI摄像头参数

编辑/opt/nvidia/deepstream/deepstream-6.2/samples/configs/deepstream-app/source1_csi_dec_infer_resnet_int8.txt

[source0] enable=1 type=5 # CSI类型 camera-width=1280 camera-height=720 camera-fps-n=30 camera-csi-sensor-id=0

5. DeepStream-Yolo融合部署

5.1 模型转换

git clone https://github.com/marcoslucianops/DeepStream-Yolo.git cd yolov5 python3 ../DeepStream-Yolo/utils/gen_wts_yoloV5.py -w yolov5n.pt

5.2 自定义推理配置

修改config_infer_primary_yoloV5.txt

[property] custom-network-config=yolov5n.cfg model-file=yolov5n.wts

5.3 编译运行

cd /opt/nvidia/deepstream/deepstream-6.2/sources/DeepStream-Yolo CUDA_VER=11.4 make -C nvdsinfer_custom_impl_Yolo deepstream-app -c deepstream_app_config.txt

6. 性能优化技巧

6.1 内存管理

修改zRAM配置:

sudo nano /etc/systemd/nvzramconfig.sh # 将mem = $(("${totalmem}"/2/"${NRDEVICES}")*1024) # 改为 mem = $(("${totalmem}"*2/"${NRDEVICES}")*1024)

6.2 实时监控

使用jtop观察资源占用:

sudo pip3 install -U jetson-stats jtop

当看到CSI摄像头终于正常显示画面,YOLOv5的检测框准确框住目标时,那种成就感让人忘记所有调试的煎熬。建议在深夜调试时准备些零食——你永远不知道下一个问题会消耗多少时间。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询