本文介绍: 最近同事问了一个问题如何同时开启多个摄像头自己之前也不了解,于是上网查了一下,决心自己做个实验尝试下。对于单个摄像头使用自己之前有文章可以看下。【在英伟达nvidiajetsonorinnx使用调试摄像头初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】在Linux下,有很多工具可以使用可以同时打开多个摄像头

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摄像头,先确认可以单独打开

本次在jetsonorinnx使用摄像头连接如下,和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下,有很多工具可以使用,可以同时打开多个摄像头。
目前在网上搜到一些工具简单罗列如下

  1. ffmpeg
  2. v4l-utils
  3. OpenCV
  4. 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、总结

慢慢积累吧

原文地址:https://blog.csdn.net/qq_22146161/article/details/134814872

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_45366.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注