【在英伟达nvidia的jetson-orin-nx上使用调试摄像头-初步调试USB摄像头与Camera Conn.#0/#1接口-基础测试】

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、总结

原本想简单写的,没想到花了很长时间。

### 云台控制系统设计实现 #### 1. 协议支持概述 现代云台控制系统通常依赖于多种通信协议来完成设备间的交互。常见的协议包括ONVIF、VISCA以及Pelco-D/P等[^1]。这些协议提供了标准化的方式用于远程控制摄像头的方向调整和其他功能。 - **ONVIF**: 这是一个开放性的标准接口定义,广泛应用于IP摄像机领域。它允许不同厂商生产的设备之间互相操作。 - **VISCA (Video Interface Standard for Control of Cameras)**: 主要由Sony开发的标准,适用于通过RS-232C或者UDP/IP方式对索尼系列及其他兼容品牌的PTZ(pan/tilt/zoom)相机进行精确操控。 - **Pelco-D/P**: 另一种工业级串行通讯协定,被大量安防监控产品所采用,能够简单有效地发送指令给受控单元改变其位置状态。 #### 2. 基于Jetson Nano平台的视觉跟踪解决方案 对于更复杂的场景需求,则可以考虑利用嵌入式计算硬件如NVIDIA Jetson Nano配合先进的机器学习框架YoloV5构建智能化程度更高的目标检测追踪系统[^2]。此类方案不仅限定了基本运动轨迹规划还加入了实时图像分析能力从而提升整体性能表现水平。 具体流程如下: - 使用YOLOv5模型识别并定位感兴趣的对象; - 计算对象相对于视场中心的位置偏差值作为反馈信号输入到闭环调节算法当中去驱动电机动作直至两者重合为止; 以下是简化版伪代码展示如何结合上述组件创建一个基础版本的目标追随机制: ```python import cv2 from yolov5 import YOLOv5Model def track_object(frame, model): results = model.predict(frame) if len(results.xyxy[0]) > 0: bbox = results.xyxy[0][0].cpu().numpy() center_x = int((bbox[0]+bbox[2])/2) center_y = int((bbox[1]+bbox[3])/2) frame_height,frame_width,_=frame.shape error_x=center_x-frame_width//2 error_y=(center_y-(frame_height*7)//8)*(-1)#因为向下看是正方向所以取反号 send_command_to_gimbal(error_x,error_y) def main(): cap=cv2.VideoCapture(0) model=YOLOv5Model('best.pt') while True: ret,frame=cap.read() if not ret : break track_object(frame,model) main() ``` 此脚本片段展示了从捕获视频流开始直到调用函数向机械臂发出相应命令结束整个过程的核心逻辑结构图景。 #### 3. UDEV规则配置说明 当涉及到Linux环境下外设管理时,可能需要用到udev工具链来进行动态加载卸载处理工作。例如每当连接新的USB型态下的摄影装置之后都需要重新扫描总线树形拓扑关系以便让操作系统及时感知新增资源的存在状况。这可以通过执行下面两条shell command达成目的: `sudo udevadm control --reload-rules && sudo udevadm trigger ` 以上命令序列会强制刷新当前活动session内的device manager缓存表项进而激活最新挂接上的peripheral component instance实例化映射关联关系建立起来。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好奇龙猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值