【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-同时开启多个摄像头-基础测试(2)】
【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-同时开启多个摄像头-USB摄像头与Camera Conn.#0/#1接口-基础测试(2)】
- 1、概述
- 2、实验环境
- 3、 先前确认
- (1)USB摄像头,先确认可以单独打开
- (2)CSI摄像头,首先确认单独打开
- 4、自我总结
- (1)工具的选择和使用方式
- (2)相关工具与指令
- 5、实验过程
- (1)usb摄像头测试过程
- 1、实验过程
- 2、实验初效
- 3、加入多个摄像头&安装软件
- 4、开启多个USB摄像头
- (2)CSI摄像头测试过程
- 1、实验过程
- 2、实验结果
- (3)CSI摄像头相关工具安装
- (3)CSI摄像头多个摄像头打开
- 6、细节部分
- (1)其他工具尝试
- (2)OpenCV的python脚本文件报错
- (3)其他知识补充
- 7、总结
1、概述
最近同事问了一个问题,如何同时开启多个摄像头,自己之前也不了解,于是上网查了一下,决心自己做个实验来尝试下。
对于单个摄像头使用,自己之前有文章可以看下。
【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】
2、实验环境
初次了解,这里使用提供软硬件信息吧。
硬件信息:Jetson Orin nx
软件版本:Linux ubuntu 5.10.120-tegra #1 SMP PREEMPT Tue Aug 1 12:32:50 PDT 2023 aarch64 aarch64 aarch64 GNU/Linux (注意因为重新刷机,版本有点改变)
其它硬件:USB摄像头,CSI的摄像头,和CSI排线。
3、 先前确认
对于单个摄像头使用,自己之前有文章可以看下。
【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】
如果想同时调试多个摄像头,至少先确认每个摄像头是可以打开的,这里使之前文章,对于初学者最好先确认下,以证明连接和摄像头没有问题。否则开始很容易打不开。
(1)USB摄像头,先确认可以单独打开
本次在jetson-orin-nx使用摄像头连接如下,和jetson orin nx板子是一家买的。
我这里只是给个参照,请各位根据自己需求购买相关摄像头。
物品链接:创乐博 树莓派 jetson 免驱USB 摄像头视觉云台 AI 人脸识别视觉对焦距离可调 USB摄像头
一般来说,只要是usb接口的摄像头,大部分都是驱动都是在的,直接使用cheese工具都能直接打开,当然这部保证全部,目前接触几款都是可以的。
(2)CSI摄像头,首先确认单独打开
这种摄像头,就是使用在这上面的,我们需要看下载板的图,如下,就是Camera conn.#0 [j20]和Camera conn.#1 [j21]。
这个图是出自“jetson orin nano developer kit…"文档,可以去英伟达官网搜索。
如下,其中一个是,我自己的套件里带的摄像头。
物品链接:https://item.jd.com/10069364522103.html
另一个是后买的摄像头,也是同一家,当时就是怕装上不好使。
物品链接:https://item.jd.com/10020835077458.html
4、自我总结
(1)工具的选择和使用方式
在Linux下,有很多工具可以使用,可以同时打开多个摄像头。
目前在网上搜到一些工具简单罗列如下:
- ffmpeg
- v4l-utils
- OpenCV
- GStreamer
每个工具各样特点吧,有想法的可以去详细了解下,目前用过OpenCV,它一般比较适合开发。
而本期我们只是同时多开摄像头设备
对于USB摄像头,所使用工具是 ffmpeg。
对于CSI摄像头,所使用工具是 GStreamer。
ffmpeg这个工具还能做剪辑等工作,暂时就先不细说了。
(2)相关工具与指令
确认相关使用工具后,那么就是使用相关使用工具,调用相关指令,在上网上查的适合,发现有些指令是无法成功的,会报一些错误,对于新手而言,还是有点难得,除非认准了这个工具,否则不细细研究每个错误。
5、实验过程
如下图,就是本次设备了,需要先连接后摄像头和线,USB摄像头直接插在usb口上,csi排线接在接口上。
(1)usb摄像头测试过程
1、实验过程
建议先只链接一个USB摄像头,这样也不乱,一个个验证比较好。
开机后,打开终端,先送搜以下,看看摄像头在不在,是否被系统识别了。如下,因为自己已经熟悉了,所以都插上了。
使用命令查看摄像头。
ls /dev/vid*ce
之后,USB摄像头其实测试也是非常简单的,打开终端直接输入。
cheese
2、实验初效
一般没有什么问题的话,会直接出图的。
我这里还是不想本人出镜,就拿个本子挡住了。
3、加入多个摄像头&安装软件
我们手动插入多个USB摄像头,然后在终端中安装软件,具体命令如下。
476 ls /dev/video*
477 cheese
478 sudo apt-get install ffmpeg
479 sudo apt update
480 history
(1)安装软件截图
(2)历史命令截图
4、开启多个USB摄像头
如下使用命令,在新的终端中,一个一个,注意每次开一个新摄像头,都需要开一个终端。
ffplay -f v4l2 /dev/video0
ffplay -f v4l2 /dev/video1
(1)我们先看下有多少个设备在线
wjl-linux@ubuntu:~$ ls /dev/video*
/dev/video0 /dev/video2 /dev/video4 /dev/video6
/dev/video1 /dev/video3 /dev/video5 /dev/video7
(2)新开终端,使用命令尝试
ffplay -f v4l2 /dev/video0
最终新开了三个终端,并不是所有摄像头都可以使用,会报错,错误如下。
最后打开了三个终端。
(2)CSI摄像头测试过程
csi相对复杂点,并且不能直接使用cheese工具。并且在调试过程中,还遇到了问题。
1、实验过程
建议先只链接一个CSI摄像头,这样也不乱,一个个验证比较好。
开机后,打开终端,先送搜以下,看看摄像头在不在,是否被系统识别了。如下,因为自己已经熟悉了,所以都插上了。
使用命令查看摄像头。
ls /dev/vid*ce
之后,打开终端,输入如下指令。
这个指令是自己尝试成功了的。
DISPLAY=:1.0 nvgstcapture-1.0
当时商家给到指令是
DISPLAY=:0.0 nvgstcapture-1.0
不管如何尝试,系统都会报错,其实也没有刷系统,但就是不行,后来自己没办法,加上排线烧了,按照商家建议,将摄像头发回验证,后刷系统,还是不行,自己尝试尝试后,才弄通,所以在报如下问题时,建议两条命令都尝试下。
以下指令是根据商家(就是买套件jetson orin nx商家售后)说明,也有相关教程。
链接:Jetson Orin NX CLB套件客户资料
百度网盘链接:https://pan.baidu.com/s/1axRaDMaezUEm3h6_OHEf6w
提取码:wjl5
2、实验结果
如上所示,使用如下指令后,可以正常调用摄像头了。
我这里还是不想本人出镜,就拿个本子挡住了。
(3)CSI摄像头相关工具安装
sudo apt-get install GStreamer
(3)CSI摄像头多个摄像头打开
命令如下:
gst-launch-1.0 \
nvarguscamerasrc sensor-id=0 ! "video/x-raw(memory:NVMM), width=640, height=480, format=NV12, framerate=30/1" ! nvvidconv ! xvimagesink \
nvarguscamerasrc sensor-id=1 ! "video/x-raw(memory:NVMM), width=640, height=480, format=NV12, framerate=30/1" ! nvvidconv ! xvimagesink
6、细节部分
(1)其他工具尝试
开始尝试过其他工具,都碰到一些问题,但是自己觉得,是自己不会用,不过本次实验主要是完成多个摄像头同时打开,就不研究了。
(2)OpenCV的python脚本文件报错
之前为了调试usb摄像头,将csi线拔掉了,怕互相影响。
一定要关机再拔线
结果忘记了,openCV的python脚本,是用来给CSI的摄像头的。
(3)其他知识补充
1、OpenCV:
如前所述,使用 OpenCV,可以编写自定义的 Python 脚本来同时打开和显示多个摄像头。这种方法提供了很高的灵活性,允许控制视频流的处理和显示方式。
2、GStreamer:
GStreamer 是一个强大的多媒体框架,可以用来创建复杂的视频流处理管道。可以使用 GStreamer 的命令行工具 gst-launch-1.0 来创建一个管道,该管道从多个摄像头捕获视频并将其显示在屏幕上或者处理这些视频流。
3、FFmpeg:
FFmpeg 是一个非常强大的多媒体处理工具,它也可以用来捕获和显示来自多个摄像头的视频流。通过合适的命令行参数,FFmpeg 可以同时处理多个视频源。
4、VLC Media Player:
VLC 是一个流行的媒体播放器,它也可以用来捕获和显示视频流。可以打开多个 VLC 实例,每个实例捕获一个摄像头的视频流。
5、专业的视频监控软件:
如果需求是视频监控方面的,那么使用专业的视频监控软件可能是最好的选择。这些软件通常支持多摄像头输入,并提供各种高级功能,如录制、运动检测等。
6、Web-based solutions:
有些基于网页的解决方案允许通过浏览器访问和显示多个摄像头。这些通常涉及到一些网络配置,并可能需要一定的编程知识来设置。
7、总结
慢慢积累吧