0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为容器接入USB摄像头

NVIDIA英伟达企业解决方案 来源:NVIDIA英伟达企业解决方案 作者:NVIDIA英伟达企业解 2022-08-31 09:35 次阅读

前面教大家使用 DeepStream 的 Docker 镜像去创建自己的 Python 工作环境,其好处是即使 Jetson 设备需要使用 JetPack 重新安装系统,我们只要重新启动这个 Docker 容器就可以,无需重复环境配置的工作。

输入源在视频分析中是至关重要的部分,先前的视频文件只是单纯的测试目的,真正实用的部分还是需要接上摄像头或网络的视频流,这样才能应用到实际的工作场景。本文的内容就是带领读者将摄像头与 RTSP 流接入容器内使用,搭建具有实用价值的容器。

1、接入摄像头

第一件任务就是要判断摄像头的种类与数量,用最简单的 “ls /dev/video*” 指令并不能分辨其种类,因此最好的方法还是使用 v4l2 工具。请先执行以下指令安装这个工具:

sudo  apt   install  -y  v4l-utils

安装好之后,请执行以下指令:

v4l2-ctl  --list-devices

如果检测到以下 “imx219” 之类的信息,表示这个摄像头为 CSI 类型:

0f4f1590-2853-11ed-ba43-dac502259ad0.png

如果检测到以下 USB Camera” 信息的,就表示为 USB 摄像头:

0f6a7c04-2853-11ed-ba43-dac502259ad0.png

在 Jetson Orin 开发套件的 USB 摄像头都会占用 2 个 video 口,例如上图中的一台 USB 摄像头占用 video0 与 video1 两个端口,但实际能调用作为输入功能的是第一个 video0 的编号,如果设备上有多个摄像头的时候,就需要特别注意这些细节。

由于 CSI 摄像头与 USB 摄像头的调用方式不同,因此在创建 Docker 容器时,需要使用以下两种不同的映射方式将设备指到容器内使用:

  • CSI 摄像头:使用 “-v /tmp/argus_socket:/tmp/argus_socket” 方式进行映射;

  • USB 摄像头:使用 “--device/dev/video” 方式进行映射,如果有多个 USB 摄像头则可以使用 “--device /dev/video --device /dev/video ...” 方式添加到容器内。

这些摄像头加到容器之后,会发现容器内的编号与容器外是对应的,例如原本 video0 与 video2 两个 USB 摄像头,进到容器之后同样为 video0 与 video2 的编号。

由于 Jetson Orin 开发套件的 CSI 摄像头比较特殊,因此这里使用两个 USB 摄像头来做演示,并以 nvcr.io/nvidia/deepstream-l4t:6.1-samples 镜像来创建执行容器,如果您按照前面文章将 samples 内容复制到容器外的话,请执行以下指令:

sudo xhost +sirootdocker run -it --net=host --runtime=nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream -v /tmp/.X11-unix/:/tmp/.X11-unix -v ~/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples --device/dev/video0--device/dev/video2nvcr.io/nvidia/deepstream-l4t:6.1-samples

现在进入容器后先检查摄像头数量,请执行以下指令:

apt  install  -y  v4l-utilsv4l2-ctl--list-devices

会看到如下的信息,表示有两个 USB 摄像头:

0f7c6bc6-2853-11ed-ba43-dac502259ad0.png

这样就能在容器内调用摄像头来进行工作。

2、执行容器内 deepstream-app 调用 USB 摄像头

在容器内用 deepstream-app 进行演示,使用 samples/config/deepstream-app 下的 source1_usb_dec_infer_resnet_int8.txt 配置文件,不过需要对配置文件进行以下的修改:

  • 将 [tiled-display] 设置组的 columns 设为 2,配合两个摄像头的显示;

  • 确认 [source0] 设置组最后的 camera-v4l2-dev-node 设为 0;

  • 将 [source0] 设置组复制一为 [source1],将 camera-v4l2-dev-node 设为 2;

  • 将 [sink0] 设置组的 type 设为 2。

主要修改部分如下:

[tiled-display]...columns=2...[source0]...camera-v4l2-dev-node=0# 将[source0]内容复制一份成下面的[source1],并修改节点编号[source1]...camera-v4l2-dev-node=2...[sink0]...type=2

修改完后,就在容器内执行以下指令:

cd  samples/config/deepstream-appdeepstream-app-csource1_usb_dec_infer_resnet_int8.txt

就应该能看到显示两个摄像头的画面。

0f97ee00-2853-11ed-ba43-dac502259ad0.png

3、执行容器内 Python 调用 USB 摄像头范例

如果您已经按照前面文章创建支持 Python 开发环境的 DeepStream 容器,现在就可以用前面存好的 deepstream-l4t:6.1-python 镜像创建 ds_python 容器,如果还没有创建好的话,可参考上一篇文章中去调试 Python 执行环境。

现在执行以下指令,使用 deepstream-l4t:6.1-python 镜像创建可执行 Python 范例的容器:

sudo xhost +sirootdocker run -id --net=host --name=ds_python --runtime=nvidia -e DISPLAY=$DISPLAY -w /opt/nvidia/deepstream/deepstream  -v /tmp/.X11-unix/:/tmp/.X11-unix -v  ~/deepstream/deepstream/sources:/opt/nvidia/deepstream/deepstream/sources -v  ~/deepstream/deepstream/samples:/opt/nvidia/deepstream/deepstream/samples  --device /dev/video0  --device /dev/video2  deepstream-l4t:6.1-pythondockerexec-itds_pythonbash

进入容器后,先使用以下指令检查摄像头是否完成连接:

apt  install  -y  v4l-utilsv4l2-ctl--list-devices

如果看到如下的信息,表示有两个 USB 摄像头:

0f7c6bc6-2853-11ed-ba43-dac502259ad0.png

现在使用 Python 范例的 deepstream-test1-usbcam 项目来执行 USB 摄像头的测试,请执行以下指令:

cd sources/deepstream_python_apps/apps/deepstream-test1-usbcam/./deepstream_test_1_usb.py/dev/video0

这样就能在容器内调用 USB 摄像头。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7888

    浏览量

    263921
  • NVIDIA
    +关注

    关注

    14

    文章

    4929

    浏览量

    102787
  • 摄像头
    +关注

    关注

    59

    文章

    4806

    浏览量

    95389
  • python
    +关注

    关注

    55

    文章

    4778

    浏览量

    84439

原文标题:NVIDIA Jetson 系列文章(9):为容器接入USB摄像头

文章出处:【微信号:NVIDIA-Enterprise,微信公众号:NVIDIA英伟达企业解决方案】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    解决USB摄像头所导致的花屏故障

    。  另外在将摄像头和计算机相连接时,还应注意下面的一些细节:首先在插入摄像头之前,尽量不要用手接触到摄像头USB接口处的金属,因为人体静电可能会通过
    发表于 03-16 09:53

    USB 摄像头

    USB 摄像头FA-CAM202NanoPi M3,USB摄像头,X710屏,串口wiki资料链接:http://wiki.friendlyarm.com/wiki/index.php
    发表于 12-01 17:44

    [转载]迅4412开发板 android系统原生态的摄像头程序驱动USB摄像头

    最近有个想法,使用android原带的Camera驱动USB摄像头,因为OV5640线太短,USB摄像头线长,而且通用性和分辨率都有优势。迅
    发表于 03-16 17:47

    STM32单片机如何实现连接USB摄像头

    应用的摄像头sensor模块,电路板摄像头提供3.3v的电源,通过IIC总线sensor配置初始化参数,通过USB 2.0高速接口将图像
    发表于 07-19 06:20

    USB摄像头及其应用

    了解到一些USB摄像头的规格以及应用。市面常见的列:从VGA-720P-1080P-5M/2K-8M/4K-16M规格都有。下面我将粗略的罗列一些应用: **1:电脑外挂摄像头**:
    发表于 09-30 09:13

    USB摄像头接在RK3399Pro上设备检测不到摄像头是什么原因

    USB摄像头接在板子上后用cheese和后台程序都检测不到接入摄像头,有大佬知道这是什么原因吗?
    发表于 04-02 12:02

    usb摄像头电路

    usb摄像头电路
    发表于 07-21 12:49 9326次阅读
    <b class='flag-5'>usb</b><b class='flag-5'>摄像头</b>电路

    基于USB的数字摄像头设计

    本内容介绍了基于USB的数字摄像头设计
    发表于 05-24 11:40 239次下载
    基于<b class='flag-5'>USB</b>的数字<b class='flag-5'>摄像头</b>设计

    【解决方案】如何将USB摄像头转换为网络摄像头

    通过USB接口和PC端进行视频传输。支持USB接口的WiFi模块更多基于USB接口WiFi模块的网络摄像头应用可直接访问SKYLAB官网或阿里店铺,我们将竭诚
    的头像 发表于 05-07 22:54 3.7w次阅读

    STM32单片机实现连接USB摄像头

    应用的摄像头sensor模块,电路板摄像头提供3.3v的电源,通过IIC总线sensor配置初始化参数,通过USB 2.0高速接口将图像
    发表于 11-18 20:51 146次下载
    STM32单片机实现连接<b class='flag-5'>USB</b><b class='flag-5'>摄像头</b>

    Jacinto™︎摄像头接入与ISP处理

    Jacinto™︎摄像头接入与ISP处理
    发表于 10-28 11:59 0次下载
    Jacinto™︎<b class='flag-5'>摄像头</b><b class='flag-5'>接入</b>与ISP处理

    LDR6023Q在USB摄像头转接器的应用

    USB摄像头转接器有三个Type-C接口,上方Type-C公是连接手机,下方两个Type-C母座分别是接USB摄像头和充电器,转接器可以实
    的头像 发表于 07-01 15:42 694次阅读
    LDR6023Q在<b class='flag-5'>USB</b><b class='flag-5'>摄像头</b>转接器的应用

    LDR6023Q是如何运用在USB摄像头转接器的?

    USB摄像头转接器有三个Type-C接口,上方Type-C公是连接手机,下方两个Type-C母座分别是接USB摄像头和充电器,转接器可以实
    的头像 发表于 07-15 10:11 1033次阅读
    LDR6023Q是如何运用在<b class='flag-5'>USB</b><b class='flag-5'>摄像头</b>转接器的?

    USB摄像头解决方案

    摄像头也应运而生。 USB摄像头转接器有3个Type-C接口,上方的C公是用于连接手机,下方的两个C母分别用于连接USB
    的头像 发表于 08-28 23:06 1858次阅读
    <b class='flag-5'>USB</b><b class='flag-5'>摄像头</b>解决方案

    usb摄像头替换手机前置摄像头可以吗

    随着科技的进步和智能手机的普及,摄影已经成为了我们日常生活中不可或缺的一部分。然而,有时我们可能会对手机自带的前置摄像头的拍摄效果感到不满意。那是否可以考虑用USB摄像头替代手机前置摄像头
    的头像 发表于 01-08 14:11 2283次阅读