【在英伟达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下,有很多工具可以使用,可以同时打开多个摄像头。
目前在网上搜到一些工具简单罗列如下:

  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  cheese478  sudo apt-get install ffmpeg479  sudo apt update480  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、总结

慢慢积累吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/199499.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode题库(数据库合集)_ 难度:困难

目录 难度:困难1. 部门工资前三高的所有员工2. 行程和用户3. 体育馆的人流量4. 员工薪水的中位数5. 同一天的第一个电话和最后一个电话6. 查询员工的累计薪水7. 给定数字的频率查询中位数8. 学生地理信息报告9. Hopper 公司查询 ①10. 职员招聘人数11. 职员招聘人数…

MPC模型预测控制理论与实践

一、基本概念 最有控制的动机是在约束条件下达到最优的系统表现。 模型预测控制(MPC,Model Predictive Control)是通过模型来预测系统在某一未来时间段内的表现来进行优化控制,多用于数位控制,通常用离散型状态空间表…

python 堆与栈

【一】堆与栈 【 1 】简介 栈(stack),有些地方称为堆栈,是一种容器,可存入数据元素、访问元素、删除元素,它的特点在于只能允许在容器的一端(称为栈顶端指标,英语:top&a…

Java_ArrayList顺序表详解

目录 前言 顺序表 ​编辑 顺序表和数组 ArrayList简介 说明 ArrayList使用​编辑 ArrayList常见操作 ArrayList实现二维数组 ArrayList的遍历 ArrayList的扩容机制 总结 前言 一个高端的程序员,往往都是数据结构学的很好,判断一个程序的优劣也是看数据结构学的好与坏.…

原生video设置控制面板controls显示哪些控件

之前我们学习了如何使用原生video播放视频 今天来一个进阶版的——设置控制面板controls显示哪些控件 先看一下当我们使用原生video时,controls属性为true时,相关代码如下: 正常的控制面板默认显示的控件有:播放、时间线、音量调…

Android基础: 使用Java代码控制 Activity类页面相互之间进行跳转 Activity页面的的启动和结束

Android基础(Activity) Activity的启动和结束 我们主要看Java代码逻辑: 第一个页面的逻辑代码 public class StartActivity01 extends AppCompatActivity implements View.OnClickListener {Overrideprotected void onCreate(Bundle saved…

香港云服务器计算型和通用型的区别

在当今数字化时代,云服务器作为企业级应用的核心设备,其性能和类型对于企业的运营和数据处理至关重要。在常见的香港云服务器类型中,通用型和计算型是最为常见的两种。那么,这两种云服务器到底有什么区别呢? 设计目标和应用场景不…

HarmonyOS开发基础(一)

HarmonyOS开发基础(一) // :装饰器:用来装饰类结构、方法、变量 Entry // Entry:标记当前组件为入口组件 Component // Component:标记为自定义组件 // struct:自定义组件,可复用的…

【LeetCode】692. 前K个高频单词

692. 前K个高频单词 描述示例解题思路及事项思路一思路二 描述 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词。 返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率, 按字典顺序 排序 示例 示例1 输…

Python实现FA萤火虫优化算法优化BP神经网络回归模型(BP神经网络回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 萤火虫算法(Fire-fly algorithm,FA)由剑桥大学Yang于2009年提出 , …

15.Servlet [一篇通]

文章目录 1.Servlet 是什么2.第一个 Servlet 程序2.1创建项目2.2引入依赖2.3创建目录2.4编写代码2.5打包程序2.6部署程序2.7验证程序 3.更方便的部署方式3.1安装 Smart Tomcat 插件3.2配置 Smart Tomcat 插件 4.访问出错怎么办?4.1出现 4044.2出现 4054.3出现 5004.4出现 &quo…

移动端APP测试方法

1 APP测试基本流程 1.1 测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间。正式测试前先向主管确认项目排期。 1.2 测试资源 测试任…

冬天来了,波司登的高端化“春天”不远了?

最近,羽绒服频繁“贵”上热搜。 在众多热搜词条中,一条“国产羽绒服卖到7000元”的话题一度将波司登推上了舆论的风口浪尖。 对此,波司登在最新的业绩说明会上进行了回应,公司表示:“波司登旗下主品牌及子品牌将形成差…

mysql原理--InnoDB记录结构

1.InnoDB行格式 我们平时是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为 行格式 或者 记录格式 。 设计 InnoDB 存储引擎的大叔们到现在为止设计了4种不同类型的 行格式 ,分别是 Compact 、 Redundant 、Dynamic 和 Compressed 行…

抖音直播间购物小黄车的商品详情数据SKU接口轻松拿下

我们都知道,抖音直播购物车的商品链接只能是抖音小店的,如果没有开通抖音小店,还能添加小店链接吗? 也是可以的。 抖音直播小黄车的链接可以是自己的小店商品,也可以是别人的小店商品。 抖音直播上链接有两种方式&a…

centos7防火墙开启端口

1.查看防火墙状态 firewall-cmd --state如果返回的not running,那么需要先开启防火墙 2.开启关闭防火墙 systemctl start firewalld.service systemctl stop firewalld.service systemctl restart firewalld.service3.开放指定端口 firewall-cmd --zonepublic -…

MYSQL8用户权限配置详解

单位的系统性能问题需要把Mysql5升级到Mysql8,需要用到Mysql8的一些特性来提升系统的性能。 配置用户权限过程中发现一些问题,学习并记录一下。 目录 一、环境 二、MySQL8 用户权限 2.1 账号管理权限 2.1.1 连接数据库 2.1.2 账号权限配置 2.2 密码…

Container容器技术简介

本文介绍了容器技术出现背景,docker技术与容器编排技术的简单说明 背景 在传统项目的生产环境中,迁移一个用户态进程往往非常麻烦,因为一个用户态进程背后会附带这非常多例如函数库、中间件等的依赖项,但又没有像apt和yum一样的…

洗地机哪个牌子好用?洗地机希亦、石头、添可、西屋谁的清洁力更强?

洗地机的出现极大地改善了清洁过程,提高了效率,减少了人力投入。但随着市场上洗地机的种类和功能不断增加,人们可能会感到困惑,不知道如何选择适合自己需求的机器。为了帮助消费者更好地了解洗地机的选择,今天我将带大…

java21实战record

java程序员一直以如何让代码写的可维护性跟高,不论是框架还是代码都追求精益求精。 第一阶段:由于面向对象的要求,我们会将成员变量用私有属性修饰,但是,如果面临类中的成员变量比较多的情况下,修改会非常麻…