当前位置: 首页 > news >正文

Jetson平台CSI摄像头采集与显示:gst-launch-1.0与OpenCV实战

前言

在NVIDIA Jetson系列(如Nano、Xavier、Orin等)嵌入式AI平台上,CSI摄像头(MIPI接口)是高性能视觉应用的首选。本文将介绍如何用GStreamer命令行工具(gst-launch-1.0)和OpenCV(cv2)两种方式,采集并显示CSI摄像头画面。


一、gst-launch-1.0 和 nvarguscamerasrc 简介

1.1 gst-launch-1.0

gst-launch-1.0 是 GStreamer 框架的命令行工具。GStreamer 是一个强大的开源多媒体处理框架,广泛用于音视频采集、处理、转码、流媒体等场景。
gst-launch-1.0 允许开发者通过命令行快速搭建和测试多媒体“管道”,无需写代码即可完成复杂的数据流处理。

主要特点:

  • 支持各种音视频格式和协议
  • 插件化、可扩展
  • 支持硬件加速(如NVIDIA Jetson平台)

1.2 nvarguscamerasrc

nvarguscamerasrc 是 NVIDIA Jetson 平台专用的 GStreamer 插件,用于采集 MIPI CSI 摄像头数据。它直接调用 Jetson 的硬件 Argus 驱动,支持高分辨率、低延迟和硬件加速,非常适合嵌入式视觉应用。

常用参数:

  • sensor_id:指定摄像头编号(0、1、2…)
  • exposuretimerangegainrange 等:高级相机参数

二、命令行方式读取并显示CSI相机

在 Jetson 上,最常用的命令如下:

gst-launch-1.0 nvarguscamerasrc sensor_id=0 ! \
'video/x-raw(memory:NVMM),width=1280,height=720,framerate=30/1,format=NV12' ! \
nvvidconv ! nveglglessink

命令详解:

  • nvarguscamerasrc sensor_id=0:采集第一个CSI摄像头
  • video/x-raw(memory:NVMM),width=1280,height=720,framerate=30/1,format=NV12:指定分辨率、帧率、格式
  • nvvidconv:NVIDIA硬件加速的视频格式/尺寸转换
  • nveglglessink:硬件加速显示到屏幕

效果
运行后会弹出一个窗口,实时显示摄像头画面,延迟极低,性能极高。


三、用OpenCV读取并显示CSI相机

OpenCV(cv2)也可以通过GStreamer管道读取CSI摄像头。只需将上述命令转换为GStreamer字符串,传给cv2.VideoCapture即可。

Python代码示例:

import cv2sensor_id = 0  # 摄像头编号
gst_str = (f"nvarguscamerasrc sensor_id={sensor_id} ! ""video/x-raw(memory:NVMM),width=1280,height=720,framerate=30/1,format=NV12 ! ""nvvidconv ! video/x-raw,format=BGRx ! ""videoconvert ! video/x-raw,format=BGR ! ""appsink"
)cap = cv2.VideoCapture(gst_str, cv2.CAP_GSTREAMER)if not cap.isOpened():print("无法打开摄像头")exit()while True:ret, frame = cap.read()if not ret:print("无法读取帧")breakcv2.imshow("CSI Camera", frame)if cv2.waitKey(1) & 0xFF == 27:  # 按ESC退出breakcap.release()
cv2.destroyAllWindows()

说明:

  • 通过GStreamer管道,OpenCV可以高效地读取Jetson的CSI摄像头,并以BGR格式输出,方便后续AI推理或图像处理。
  • 你可以根据需要调整分辨率、帧率等参数。

总结

  • gst-launch-1.0 是GStreamer的命令行工具,适合快速测试和调试多媒体管道。
  • nvarguscamerasrc 是Jetson平台专用的CSI摄像头采集插件,支持硬件加速。
  • OpenCV结合GStreamer管道,可以在Python中高效采集和处理CSI摄像头数据,适合AI视觉开发。

希望本文对你在Jetson平台上开发CSI摄像头应用有所帮助!如有问题欢迎留言交流。

http://www.dtcms.com/a/279769.html

相关文章:

  • 【linux V0.11】boot
  • 多生产者多消费者问题(操作系统os)
  • SpringCloud之Hystrix
  • 【DOCKER】-4 dockerfile镜像管理
  • linux网络存储——freeNAS的安装配置
  • Spring Cloud分布式配置中心:架构设计与技术实践
  • MFC/C++语言怎么比较CString类型 第一个字符
  • 读文章 Critiques of World model
  • Java(集合)
  • aspnetcore Mvc配置选项中的ModelMetadataDetailsProviders
  • SAP-ABAP:SAP库存管理核心增强:IF_EX_MB_DOCUMENT_BADI 深度解析
  • 交换类排序的C语言实现
  • Hello, Tauri!
  • 基于Android的景点旅游信息系统App
  • 使用aiohttp实现高并发爬虫
  • uni-app开发的页面跳转全局加载中
  • 基于HarmonyOS的智能灯光控制系统设计:从定时触发到动作联动全流程实战
  • C++ 中常见的字符串定义方式及其用法
  • 1111自己
  • 基础分类模型及回归简介(一)
  • 体验RAG GitHub/wow-rag
  • 前端同学,你能不能别再往后端传一个巨大的JSON了?
  • 引用(C++)
  • python的微竞网咖管理系统
  • ⽂本预处理(一)
  • volatile 关键字
  • Codeforces Round 787 (Div. 3)(A,B,C,D,E,F,G)
  • DO,VO,DTO.....
  • (二十四)-java+ selenium自动化测试-三大延时等待
  • UI前端与数字孪生融合案例:智慧城市的智慧停车引导系统