在Jetson Nano上挂载摄像头并用OpenCV调用摄像头(较详细)
——前言
我的攝像頭為樂視的USB口攝像頭,板子為Jetson Nano 4GB的板子
將攝像頭接在Jetson Nano板子上,開機板子。
由于我之前已經實現Jetson Nano的內網穿透,故此處可以不用將我的Nano板連接顯示器后進行操作,此處我使用了Xshell6對板子進行外網SSH連接到終端,進行后續操作(還可以使用MobaXterm、FinalShell等工具進行連接)
若在Xshell出現類似下面的輸出,則說明連接成功
Welcome to Ubuntu 18.04.3 LTS (GNU/Linux 4.9.140-tegra aarch64)
?* Documentation:? https://help.ubuntu.com
?* Management:???? https://landscape.canonical.com
?* Support:??????? https://ubuntu.com/advantage
?* Super-optimized for small spaces - read how we shrank the memory
?? footprint of MicroK8s to make it the smallest full K8s around.
?? https://ubuntu.com/blog/microk8s-memory-optimisation
This system has been minimized by removing packages and content that are
not required on a system that users do not log into.
To restore this content, you can run the 'unminimize' command.
...
——掛載攝像頭
由于我們已經提前插好了攝像頭,故此處我們可以直接輸入
ls /dev/video*從而查看攝像頭掛載情況
正常執行結果:輸出/dev/video0
若沒有輸出video0或video1,說明攝像頭和板子不兼容或者沒插好,請檢查攝像頭。
若要查看掛載的攝像頭的詳細信息,可以進行如下操作
sudo apt install v4l-utils?安裝v4l2-utils輔助工具
v4l2-ctl --device=/dev/video0 --list-formats-ext注:此處video后的參數可以進行修改,改成對應攝像頭的參數(如video1...)
我的攝像頭輸出如下:
ioctl: VIDIOC_ENUM_FMT
?? ?Index?????? : 0
?? ?Type??????? : Video Capture
?? ?Pixel Format: 'MJPG' (compressed)
?? ?Name??????? : Motion-JPEG
?? ??? ?Size: Discrete 640x480
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ??? ?Size: Discrete 1920x1080
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ??? ?Size: Discrete 1280x720
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ??? ?Size: Discrete 320x240
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ??? ?Size: Discrete 640x480
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ?Index?????? : 1
?? ?Type??????? : Video Capture
?? ?Pixel Format: 'YUYV'
?? ?Name??????? : YUYV 4:2:2
?? ??? ?Size: Discrete 640x480
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ??? ?Size: Discrete 1280x720
?? ??? ??? ?Interval: Discrete 0.100s (10.000 fps)
?? ??? ?Size: Discrete 320x240
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps)
?? ??? ?Size: Discrete 640x480
?? ??? ??? ?Interval: Discrete 0.033s (30.000 fps
注:
Pixel Format為像素格式,我的是雙攝像頭,有MJPG和YUYV兩種格式
Name后面的為補充說明該格式所使用的算法與通道對應的參數
若要檢測攝像頭能否正常工作,可以輸入下列指令:
nvgstcapture此處Xshell6不支持X11轉發請求,我們需要下載XManager,或者連接顯示屏開機后在終端上輸入(若覺得麻煩則此步可省略,一般攝像頭不會出現問題)。
有以下輸出證明攝像頭可以正常工作,我們就可以對攝像頭進行調用了:
Supported resolutions in case of ARGUS Camera
? (2) : 640x480
? (3) : 1280x720
? (4) : 1920x1080
? (5) : 2104x1560
? (6) : 2592x1944
? (7) : 2616x1472
? (8) : 3840x2160
? (9) : 3896x2192
? (10): 4208x3120
? (11): 5632x3168
? (12): 5632x4224
Runtime ARGUS Camera Commands:
...
——調用攝像頭
接下來,我們將使用OpenCV調用攝像頭,調用攝像頭可以參考下面連接的最后一步
環境配置—Ubuntu 16.04 安裝Opencv 3.4.3 - 簡書zzyy
若沒有安裝OpenCV,也可以參考上述鏈接:
注:
sudo make 這一步所需的時間特別久,可能需要幾個小時,其中有好幾個target,如果中途斷開連接,則下一次不會重新開始make,會從已經make好的最后一個target開始。但是這并不代表可以中斷后重新開始make,如果這樣做很可能會出現file not recognized: File truncated的錯誤,這種錯誤一般是編譯數據被截斷或則編譯過程中發生異常退出系統而導致的數據丟失。如果出現該錯誤,只能輸入sudo make clean并且重新編譯了。
如果覺得sudo make所需要的時間特別久,可以試試輸入sudo make -j8指令。讓make最多允許8個編譯命令同時執行,這樣可以更有效的利用CPU資源。在多核CPU上,適當的進行并行編譯可以明顯提高編譯速度,但并行的任務不宜太多,一般是以CPU核心數目的兩倍為宜(我的Jetson Nano板子是四核的)。
總結
以上是生活随笔為你收集整理的在Jetson Nano上挂载摄像头并用OpenCV调用摄像头(较详细)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hust oj 1938 火车快跑(栈)
- 下一篇: 【Unity3D入门教程】物理引擎之碰撞