【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】
- 1、概述
- 2、实验环境
- 3、 物品说明
- (0)各种各样摄像头
- (1)USB摄像头
- (2)CSI摄像头
- (3)CSI排线
- (1)CSI排序种类
- (2)不要热插拔
- 4、自我总结
- 5、实验过程
- (1)usb摄像头测试过程
- 1、实验过程
- 2、实验结果
- (2)CSI摄像头测试过程
- 1、实验过程
- 2、实验结果
- (3)CSI摄像头使用opencv的demo
- 1、实验过程-简单dome
- 2、实验结果
- 3、实验过程-人脸识别
- 4、实验结果
- 6、代码相关链接
- 7、细节部分
- (1)系统版本有点稍微改动。
- (2)为什么cheese不能调用csi摄像头
- (3)什么是.xml文件
- (4)CSI排线接口,注意插得面。
- (5) opencv相关问题:无法找到库“CV2”
- (6) opencv相关问题:无法找到模型文件
- (7) 其他努力:尝试改python代码
- 8、总结
1、概述
自己学习一些AI有段时间,还在入门阶段,目前学习了一点“吴恩达的《人人学AI》”课程,既然买了jetson orin nx 还是想学点AI东西的。
看到很多AI相关,都是需要配合摄像头的,但作为新手,可以说完全摸不着头脑,不知道用什么指令,也不知道如何操作,自己通过询问买jetson商家和上网查资料,目前已经能简单在jetson orin nx 点起摄像头了,所以记录下来,也为感兴趣的你铺平道路。
2、实验环境
初次了解,这里使用提供软硬件信息吧。
硬件信息:Jetson Orin nx
软件版本:Linux ubuntu 5.10.120-tegra #1 SMP PREEMPT Tue Aug 1 12:32:50 PDT 2023 aarch64 aarch64 aarch64 GNU/Linux (注意因为重新刷机,版本有点改变)
其它硬件:USB摄像头,CSI的摄像头,和CSI排线。
3、 物品说明
声明:以下物品,是本人自己做此次实验购买的物品,如有需要,自己考虑买不买。
当自己为初学者的时候,想要个摄像头,其实完全不知道应该买哪种,也不知道买回来能不能用,就比较担心,有个好的办法就是,买那种套件指定的一般就可以的,就像自己买的jetson orin nx 套件,其实这家就有带摄像头的套餐,其实你不必买那个套餐,但是你可以查到那种摄像头,然后买那种摄像头就可以了。
(0)各种各样摄像头
开始的自己其实设置对摄像头也是不了解,市面是摄像头五花八门,也不确定使用哪种,如下链接是,对各种摄像头总结说明,可以快速帮你了解各种摄像头。
链接:硬件设计 之摄像头分类(IR摄像头、mono摄像头、RGB摄像头、RGB-D摄像头、鱼眼摄像头)
(1)USB摄像头
本次在jetson-orin-nx使用摄像头连接如下,和jetson orin nx板子是一家买的。
我这里只是给个参照,请各位根据自己需求购买相关摄像头。
物品链接:创乐博 树莓派 jetson 免驱USB 摄像头视觉云台 AI 人脸识别视觉对焦距离可调 USB摄像头
一般来说,只要是usb接口的摄像头,大部分都是驱动都是在的,直接使用cheese工具都能直接打开,当然这部保证全部,目前接触几款都是可以的。
(2)CSI摄像头
这种摄像头,就是使用在这上面的,我们需要看下载板的图,如下,就是Camera conn.#0 [j20]和Camera conn.#1 [j21]。
这个图是出自“jetson orin nano developer kit…"文档,可以去英伟达官网搜索。
如下,其中一个是,我自己的套件里带的摄像头。
物品链接:https://item.jd.com/10069364522103.html
另一个是后买的摄像头,也是同一家,当时就是怕装上不好使。
物品链接:https://item.jd.com/10020835077458.html
(3)CSI排线
(1)CSI排序种类
这个CSI排序需要单独说明下,因为自己买回上面“创乐博 Raspberry Pi 树莓派 USB 摄像头 英伟达红外夜视补光灯 可选支持3B/4B 英伟达摄像头(支持夜视)”模块后,发现排线根本插不进去,所以商家标注支持jetson系列,是有些误导的。那个排线是不支持jetson orin nx的,这种排线是支持 jetson Xauvier NX 及其一些相关类似载板的。
如下图,是摄像头带套件的,自己买的,以及jetson orin nx 套件带的。
在jetson orin nx上接口变得窄一些,可以自己买,或者使用配套带的,如下物品链接,也不是很贵。
物品链接:掌卓树莓派4B 摄像头排线 CSI接口 500万像素 FPC排线 zero摄像头
(2)不要热插拔
前车之鉴后车之师,前往不要热插拔。
前车之鉴后车之师,前往不要热插拔。
前车之鉴后车之师,前往不要热插拔。
自己为啥要自己买这种排序,就是在jetson orin nx 运行过程中,直接插拔摄像头,然后排线就烧了,希望大家注意吧,一定要关机下电。如下,让大家看看烧的排线,引以为戒。
4、自我总结
(1)摄像头物品模块熟悉
本身实验,其实很多时间,都用在学习相关摄像头知识上了,以及相关线的连接。
这点需要自己多看些资料,并且选择自己合适摄像头开发模块,本次相关总结看上一节。
(2)相关工具与指令
如果只是简单调用摄像头,无论是usb摄像头,还是CSI接口摄像头,指令其实都是非常简单的。
如果只是简单测试下usb摄像头,可以使用cheese工具,直接在命令行输入.
cheese
如果只是简单测试下CSI摄像头,需要打对应指令。
DISPLAY=:1.0 nvgstcapture-1.0
(3)初识应用AI模型
后来使用csi摄像头模块,简单跑了下OpenCV的工具,里面有个简单dome,其实有个是人脸识别的,后来查到,才知道,我们调用这个程序,其实是使用已经训练好的模型,也算是初步使用AI了。
5、实验过程
如下图,就是本次设备了,需要先连接后摄像头和线,USB摄像头直接插在usb口上,csi排线接在接口上。
(1)usb摄像头测试过程
1、实验过程
建议先只链接一个USB摄像头,这样也不乱,一个个验证比较好。
开机后,打开终端,先送搜以下,看看摄像头在不在,是否被系统识别了。如下,因为自己已经熟悉了,所以都插上了。
使用命令查看摄像头。
ls /dev/vid*ce
之后,USB摄像头其实测试也是非常简单的,打开终端直接输入。
cheese
2、实验结果
一般没有什么问题的话,会直接出图的。
我这里还是不想本人出镜,就拿个本子挡住了。
(2)CSI摄像头测试过程
csi相对复杂点,并且不能直接使用cheese工具。并且在调试过程中,还遇到了问题。
1、实验过程
建议先只链接一个CSI摄像头,这样也不乱,一个个验证比较好。
开机后,打开终端,先送搜以下,看看摄像头在不在,是否被系统识别了。如下,因为自己已经熟悉了,所以都插上了。
使用命令查看摄像头。
ls /dev/vid*ce
之后,打开终端,输入如下指令。
这个指令是自己尝试成功了的。
DISPLAY=:1.0 nvgstcapture-1.0
当时商家给到指令是
DISPLAY=:0.0 nvgstcapture-1.0
不管如何尝试,系统都会报错,其实也没有刷系统,但就是不行,后来自己没办法,加上排线烧了,按照商家建议,将摄像头发回验证,后刷系统,还是不行,自己尝试尝试后,才弄通,所以在报如下问题时,建议两条命令都尝试下。
以下指令是根据商家(就是买套件jetson orin nx商家售后)说明,也有相关教程。
链接:Jetson Orin NX CLB套件客户资料
百度网盘链接:https://pan.baidu.com/s/1axRaDMaezUEm3h6_OHEf6w
提取码:wjl5
2、实验结果
如上所示,使用如下指令后,可以正常调用摄像头了。
我这里还是不想本人出镜,就拿个本子挡住了。
(3)CSI摄像头使用opencv的demo
按照商家教学视频,其实还有简单的调用opencv的一个dome,这其实就是为了以后以代码的形式调用摄像头。
我们需要去网上克隆,然后安装相关opencv相关工具。
不出意外,自己还是碰到了坑的,具体情况,请看“”细节部分“”。
----------------(6)opencv相关问题:无法找到库“CV2”
1、实验过程-简单dome
我们先去从git上克隆相关demo
指令如下
1 git clone https://github.com/jetsonhacks/CSI-Camera.git
2 ls
3 cd CSI-Camera/
4 ls
5 python3 simple_camera.py
2、实验结果
如果工具安装好的情况下,直接可以打开的,相关问题请看“细节部分”。
当然,还是有可能会报错误,可以加入“sudo”权限
sudo python3 simple_camera.py
3、实验过程-人脸识别
在一些装好情况下。直接使用命令,相关问题请见。
----------------(7) opencv相关问题:无法找到模型文件
sudo python3 simple_camera.py
4、实验结果
6、代码相关链接
(1)本次代码是找的网上连接。
https://github.com/jetsonhacks/CSI-Camera
1 git clone https://github.com/jetsonhacks/CSI-Camera.git
(2)Jetson Orin Nano CLB 套件客户资料:
百度网盘链接:https://pan.baidu.com/s/1XsdE23B5ptOMfxgSZypXaw
提取码:xnlp
(3)链接:Jetson Orin NX CLB套件客户资料
百度网盘链接:https://pan.baidu.com/s/1axRaDMaezUEm3h6_OHEf6w
提取码:wjl5
7、细节部分
(1)系统版本有点稍微改动。
因为重新刷机了,和之前有点改变,但是暂时没有遇到相关系统引起问题。
(2)为什么cheese不能调用csi摄像头
Jetson Orin NX是一款嵌入式计算平台,具备强大的AI计算能力和图像处理能力。它配备了多个接口,包括CSI(CameraSerial Interface)摄像头接口,可用于连接CSI摄像头模块。
然而,Jetson Orin NX上的CSI摄像头接口并不直接支持通用的摄像头驱动程序,例如Cheese所使用的V4L2(Video for Linux 2)驱动程序。这意味着你不能直接通过Cheese这样的应用程序来打开和访问Jetson Orin NX上连接的CSI摄像头。
相反,Jetson Orin NX上使用的是NVIDIA提供的专用摄像头驱动程序和软件开发工具包(SDK),称为NVIDIA Jetpack。Jetpack提供了用于访问和控制CSI摄像头接口的API和工具,如GStreamer、NvMedia、OpenCV等。
可以使用这些工具和API来开发自己的图像处理应用程序,或者使用NVIDIA提供的示例应用程序来进行摄像头采集和处理。
如果想使用Jetson Orin NX上的CSI摄像头,需要使用NVIDIA Jetpack提供的相应工具和API来访问摄像头,而不是使用Cheese这样的通用摄像头应用程序。这样可以确保你能够充分利用Jetson Orin NX的硬件和软件优势进行图像处理和计算视觉任务
。
(3)什么是.xml文件
在OpenCV中,.xml文件通常是指用于存储和加载训练好的机器学习模型的文件格式。这些模型通常用于目标检测、人脸识别、姿态估计等计算机视觉任务。
OpenCV中的许多算法和模型都使用了机器学习技术,包括支持向量机(SVM)、卷积神经网络(CNN)和级联分类器(Cascade Classifier)等。这些模型在训练阶段生成的权重和参数会被保存为.xml文件,以便在后续的应用中使用。
例如,在人脸识别任务中,OpenCV提供了名为Haar级联分类器的算法。该算法使用了一系列的Haar特征和AdaBoost分类器进行人脸检测。在训练阶段,该算法会生成一组权重和分类器参数,并将其保存为.xml文件。在应用阶段,可以使用这个.xml文件加载模型,并在图像中进行人脸检测。
总结来说,.xml文件在OpenCV中通常用于存储和加载训练好的机器学习模型的参数和权重。它是一种常见的文件格式,用于在计算机视觉和图像处理任务中使用预训练的模型。
(4)CSI排线接口,注意插得面。
简单说,排线接口是有方向的,注意被插错。
(5) opencv相关问题:无法找到库“CV2”
其中一个坑就是工具匹配的坑,貌似我的python默认有个2.7版本的,相关opencv工具下下来后,直接装哪里了,后来没办法,只能卸载2.7的,重新安装一遍
如下表现是,找不到cv2的这个库。
或者另一种错误。
如下图所示,我发现,我有两个版本的python,和一些其他尝试。
(6) opencv相关问题:无法找到模型文件
其中第二个坑,也许是opencv工具没安装对,来回装卸有点繁琐,中间我还中断过,导致没有了模型文件,导致人脸识别demo一跑就出错。
如下图,报错什么什么为空,虽然是英文的,才想到,应该是缺这个文件。
然后去对应目录里找,果然没发现文件。
开始还没有意识到,直接去对应代码里描述目录去翻找,发现确实没有文件,也是在网上找了相关文件,直接弄了个目录,即可以了。
(7) 其他努力:尝试改python代码
开始以为是摄像头ID啥的可能不对,于是就改代码,怎么改发现都不行,就记录下吧。
如下是一些重新安装opencv的尝试
8、总结
原本想简单写的,没想到花了很长时间。