NVIDIA Jetson Nano 2GB 系列文章(6):安装与调用摄像头
2021-01-07 18:22
在本系列上一篇文章里,我们带领大家体验了视觉功能库。在本篇文章中,我们将带领大家安装与调用摄像头。
不管是 AI 深度学习或者 IOT 应用中,视觉处理都占据非常大的使用比例,而摄像头更是使用率最高的数据源设备,本文就带领大家为 Jetson Nano 2GB 安装摄像头,并且通过一些工具与简单代码,对摄像头进行测试。
Jetson Nano 2GB 开发者套件支持 CSI 摄像头、USB 摄像头和网络摄像头。
本文主要针对入门者,所以重点放在 CSI 摄像头与 USB 摄像头这两种比较合适的设备上,至于 GigE 这种复杂度较高的摄像头,先不做说明。
如何为 Jetson Nano 2GB
选择 CSI 或者 USB 摄像头
在选择摄像头之前,我们可以通过以下网址查看:
https://www.elinux.org/Jetson_Nano#Cameras
这里列出了 NVIDIA 官方推荐的摄像头型号。
一般来说 USB 接口摄像头都是免驱支持,不多做说明。
但是 CSI 接口的摄像头根据传感器芯片的不同区别很大,不是任何一款 CSI 摄像头都支持 Jetson Nano 产品,所以购买时一定要注意这个问题。目前在 Jetson Nano 上,开发者们常用的 CSI 摄像头是树莓派 V2 摄像头(传感器芯片是 IMX219)。
文章中,我们使用的就是以下这款:
【注意】CSI 摄像头不支持即插即用,所以必须在开机前先装上去,系统才能识别 CSI 摄像头,如果开机之后再安装,会导致 Jetson Nano 2GB 识别不出摄像头,且有其他风险,因此请避免在开机状态下安装摄像头。
安装 CSI 摄像头
Jetson Nano 2GB 有一个 CSI 摄像头接口,位置与外观如下图。
安装摄像头排线之前,我们首先要拔起上面的插销,请一定要特别小心,千万别弄断这个小塑料片,是会影响质保的。
安装时注意排线方向。
有金手指(金属针头)的部分,必须面向 CSI 接口与摄像头接口有排针的一面,并且谨慎地让排线插到底,否则会有接触不良的问题。最后轻轻扣上插销,安装完成!
检测摄像头
安装好摄像头后,我们需要检测一下是否安装正确。
我们为了演示,安装了 1 个 CSI 摄像头以及 2 个 USB 摄像头:
最简单的检测指令如下:
如果摄像头没有问题,且安装正确,这个指令会显示目前安装的摄像头数量。如下截屏:
你会看到列出了单个设备,但是这样的信息量太少,通常无法判断到底哪个编号是哪个摄像头。
要更进一步检测摄像头数量与详细规格,就需要 v4l2-utils 这个工具协助,安装方法很简单,如下指令:
安装完之后,可以用以下指令检测比较完整的信息:
本例中执行这个命令后,会看到下面截屏信息,将三个摄像头都列清楚:
这里就能非常清楚看到第一个(/dev/video0)属于 imx219 规格(CSI)摄像头,第二个(dev/video2)是 USB2.0 的摄像头,接到 xusb-2(规格是 USB3)接口,第三个(/dev/video1)是 USB 摄像头,接到 xusb-3.2 (规格是 USB2)接口,这样就能一目了然知道哪个编号对应哪个摄像头。
接下来还可以用这个指令,进一步检测每个摄像头的更细致规格,包括所支持的图像种类、宽高、帧数等等,这些在后面使用代码时很重要。
请执行以下指令,来看一下第一个 CSI 摄像头的规格参数:
这里更精确地列出了这个摄像头的细节参数,例如显示的“RG10”就算代表这个摄像头的数据格式,下面的“10-bit Bayer RGRG/GBGB”则是进一步说明这个格式使用的算法与通道对应的参数。
再下面的尺寸,例如 3264x2464,其下还有对应的 Interval 性能参数,表示所支持的分辨率,以及该分辨率的最高执行帧率,这样的信息量才能够帮助我们在后面开发应用时作为设定的依据。
其他的设备,请自行修改。