如何给NVIDIA JetsonOrin Nano开发套件安装CSI摄像头

Jetson Orin Nano开发套件沿袭先前系列产品的设计重点,也提供两个CSI/MIPI摄像头接口,如下图右两个黄色圆框圈出的地方,不过这次的22针接口与先前系列产品的15针接口并不相同,不过先前产品所支持的摄像头规格(例如IMX219)则是能使用的,只不过需要使用一条"22针转15针软排线"(如下图中)进行转换,可以在网上搜索"树莓派摄像头FPC转接"关键词,轻松找到很便宜的转接线,目前主流长度有4/16/30厘米三种,请根据自己的实际需求进行采购。

转换线是有方向性的,在Jetson Orin Nano开发套件与摄像头之间的接法如下图,窄边是22针接头,接到Orin Nano开发套件的接口处,金属线的部分朝下;宽边是15针接头,负责接到摄像头的接口,金属线方向朝摄像头后方。

由于CSI摄像头并不支持"PnP即插即用"功能,因此整个接线安装过程,都得在开启电源之前完成才能生效,这是必须注意的重点。

开机之后,可以先用以下指令,检查摄像头是否正确接上:

复制代码
$	ls /dev/video*

如果能显示设备的话,就表示CSI摄像头已经正常安装。接着使用v4l-utils工具组来检查一下设备的内容,现在请执行以下指令来安装v4l-utils工具:

复制代码
$	sudo  apt  install  -y  v4l-utils

现在执行以下指令,检查视觉类相关的设备:

复制代码
$	v4l2-ctl  --list-devices

下面是我们设备上显示的内容,可以看到显示有一个输入设备(Video Input Device)与一个是imx219规格的摄像头,也是我们安装的CSI摄像头规格。

可以执行以下指令进行,进一步设备更详细的规格:

复制代码
$	v4l2-ctl  -d 0 --list-formats-ext

现在可以用NVIDIA为Jetson提供的摄像头专用操控指令,就可以启动CSI摄像头:

复制代码
$	nvgstcapture

下图左边白色块部分,显示目前启动摄像头的分辨率为1280x720、帧率为60FPS。

这个指令有完整的控制选项,可以执行"nvgstcapture --help"获得更详细内容。当然我们也可以使用gst-launch-1.0这个通用性更高的操作指令,下面是最基本的指令:

复制代码
$	gst-launch-1.0  nvarguscamerasrc ! nvegltransform ! nveglglessink

这样也能正常启动CSI摄像头,并且以1920x1080分辨率与30FPS帧率执行,如下图白色信息快所示。

最后要为大家提供的,是执行docker容器时调用CSI摄像头的设定方式,毕竟这种用法能提供非常好的便利性与可移植性,是目前很明显的使用趋势。

这里在Jetson Orin Nano开发套件上,使用NVIDIA NGC中心所提供的l4t-base容器进行示范,目前最新的版本为r35.3.1(请根据实际状况调整),现在先执行以下指令去下载这个镜像文件:

复制代码
$  docker  pull  nvcr.io/nvidia/l4t-base:r35.3.1

要在docker容器内调用CSI摄像头,需要在创建时添加以下两个参数:

  • 摄像头部分:添加'-v /tmp/argus_socket:/tmp/argus_socket' 参数;
  • 显示器部分:添加'-e DISPLAY=:0'与'-v /tmp/.X11-unix:/tmp/.X11-unix'参数。

现在执行以下指令创建一个容器:

复制代码
$ sudo  xhost  +si:localuser:root
$ docker  run  -it  --privileged  --runtime  nvidia  -e DISPLAY=:0 \
-v  /tmp/.X11-unix:/tmp/.X11-unix  -v  /tmp/argus_socket:/tmp/argus_socket \ nvcr.io/nvidia/l4t-base:35.3.1

进入容器之后,执行以下指令就能启动CSI摄像头:

复制代码
$ gst-launch-1.0  nvarguscamerasrc ! nvegltransform ! nveglglessink

现在就能在容器内调用CSI摄像头进行工作了。【完】

相关推荐
生活很暖很治愈几秒前
Linux——基础IO&软硬链接
linux·ubuntu
2401_8589368813 分钟前
【Linux C 编程】标准 IO 详解与实战:从基础接口到文件操作实战
linux·c语言
Roc.Chang25 分钟前
Ubuntu 下 VLC 无法启动(Segmentation fault)终极解决方案
linux·ubuntu·vlc·媒体播放
松涛和鸣1 小时前
72、IMX6ULL驱动实战:设备树(DTS/DTB)+ GPIO子系统+Platform总线
linux·服务器·arm开发·数据库·单片机
简单中的复杂1 小时前
【避坑指南】RK3576 Linux SDK 编译:解决 Buildroot 卡死在 host-gcc-final 的终极方案
linux·嵌入式硬件
wVelpro2 小时前
如何在Pycharm 2025.3 版本实现虚拟环境“Make available to all projects”
linux·ide·pycharm
程序员老舅2 小时前
C++高并发精髓:无锁队列深度解析
linux·c++·内存管理·c/c++·原子操作·无锁队列
雨中风华3 小时前
Linux, macOS系统实现远程目录访问(等同于windows平台xFsRedir软件的目录重定向)
linux·windows·macos
爱吃生蚝的于勒3 小时前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
The森3 小时前
Linux IO 模型纵深解析 01:从 Unix 传统到 Linux 内核的 IO 第一性原理
linux·服务器·c语言·经验分享·笔记·unix