tft每日頭條

 > 生活

 > nvidia jetson nano 遊戲機

nvidia jetson nano 遊戲機

生活 更新时间:2025-01-26 17:50:06

前面教大家使用 DeepStream 的 docker 鏡像去創建自己的 python 工作環境,其好處是即使 Jetson 設備需要使用 JetPack 重新安裝系統,我們隻要重新啟動這個 Docker 容器就可以,無需重複環境配置的工作。

輸入源在視頻分析中是至關重要的部分,先前的視頻文件隻是單純的測試目的,真正實用的部分還是需要接上攝像頭或網絡的視頻流,這樣才能應用到實際的工作場景。本文的内容就是帶領讀者将攝像頭與 RTSP 流接入容器内使用,搭建具有實用價值的容器。

1、接入攝像頭

第一件任務就是要判斷攝像頭的種類與數量,用最簡單的 “ls /dev/video*” 指令并不能分辨其種類,因此最好的方法還是使用 v4l2 工具。請先執行以下指令安裝這個工具:

sudo apt install -y v4l-utils

安裝好之後,請執行以下指令:

v4l2-ctl --list-devices

如果檢測到以下 “imx219” 之類的信息,表示這個攝像頭為 CSI 類型:

nvidia jetson nano 遊戲機(NVIDIAJetson系列文章)1

如果檢測到以下 “USB Camera” 信息的,就表示為 USB 攝像頭:

nvidia jetson nano 遊戲機(NVIDIAJetson系列文章)2

在 Jetson Orin 開發套件的 USB 攝像頭都會占用 2 個 video 口,例如上圖中的一台 USB 攝像頭占用 video0 與 video1 兩個端口,但實際能調用作為輸入功能的是第一個 video0 的編号,如果設備上有多個攝像頭的時候,就需要特别注意這些細節。

由于 CSI 攝像頭與 USB 攝像頭的調用方式不同,因此在創建 Docker 容器時,需要使用以下兩種不同的映射方式将設備指到容器内使用:

  • CSI 攝像頭:使用 “-v /tmp/argus_socket:/tmp/argus_socket” 方式進行映射;
  • USB 攝像頭:使用 “--device /dev/video<N>” 方式進行映射,如果有多個 USB 攝像頭則可以使用 “--device /dev/video<N1> --device /dev/video<N2> ...” 方式添加到容器内。

這些攝像頭加到容器之後,會發現容器内的編号與容器外是對應的,例如原本 video0 與 video2 兩個 USB 攝像頭,進到容器之後同樣為 video0 與 video2 的編号。

由于 Jetson Orin 開發套件的 CSI 攝像頭比較特殊,因此這裡使用兩個 USB 攝像頭來做演示,并以 nvcr.io/nvidia/deepstream-l4t:6.1-samples 鏡像來創建執行容器,如果您按照前面文章将 samples 内容複制到容器外的話,請執行以下指令:

sudo xhost si:localuser:root docker 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/video2 nvcr.io/nvidia/deepstream-l4t:6.1-samples

現在進入容器後先檢查攝像頭數量,請執行以下指令:

apt install -y v4l-utils v4l2-ctl --list-devices

會看到如下的信息,表示有兩個 USB 攝像頭:

nvidia jetson nano 遊戲機(NVIDIAJetson系列文章)3

這樣就能在容器内調用攝像頭來進行工作。

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-app deepstream-app -c source1_usb_dec_infer_resnet_int8.txt

就應該能看到顯示兩個攝像頭的畫面。

nvidia jetson nano 遊戲機(NVIDIAJetson系列文章)4

3、執行容器内 Python 調用 USB 攝像頭範例

如果您已經按照前面文章創建支持 Python 開發環境的 DeepStream 容器,現在就可以用前面存好的 deepstream-l4t:6.1-python 鏡像創建 ds_python 容器,如果還沒有創建好的話,可參考上一篇文章中去調試 Python 執行環境。

現在執行以下指令,使用 deepstream-l4t:6.1-python 鏡像創建可執行 Python 範例的容器:

sudo xhost si:localuser:root docker 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-python docker exec -it ds_python bash

進入容器後,先使用以下指令檢查攝像頭是否完成連接:

apt install -y v4l-utils v4l2-ctl --list-devices

如果看到如下的信息,表示有兩個 USB 攝像頭:

nvidia jetson nano 遊戲機(NVIDIAJetson系列文章)5

現在使用 Python 範例的 deepstream-test1-usbcam 項目來執行 USB 攝像頭的測試,請執行以下指令:

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

這樣就能在容器内調用 USB 攝像頭。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved