在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,ubuntu,linux,运维,opencv)