目录

一、Linux系统USB串口绑定与设备管理

1. 课程导览

2. 设备识别

1)命令行侦察兵

2)设备文件生成逻辑揭秘

3. udev规则

1)参数提取黄金三要素

2)规则语法深度拆解

3)热插拔调试黑科技

4. 设备绑定技术

1)设备绑定原理

2)设备信息获取

3)规则文件创建

4)权限设置

5)规则文件编写

6)规则生效

5. 实战演示

1)设备检测

2)规则文件编辑

3)多设备测试

6. 常见问题

1)权限问题

2)设备识别错误

7. OpenCV基础介绍与应用

1)OpenCV基础介绍与应用

2)OpenCV-Python环境搭建

3)项目实战:人脸记录系统

二、人脸识别系统实现要点

三、设备使用常见问题

1. USB设备绑定

2. 虚拟机与树莓派对比

四、知识小结


一、Linux系统USB串口绑定与设备管理



00:07



1. 课程导览



00:16



  • 课程结构:分为四个核心模块:设备绑定必要性、Linux外设识别技术、udev规则编写、实战应用
  • 核心技术:重点掌握udev规则编写,实现USB串口设备的永久绑定,解决工业场景中的设备冲突问题
2. 设备识别



02:12



1)命令行侦察兵



02:17



  • lsusb命令:
    • 功能:列出所有连接的USB设备,显示厂商ID(Vendor ID)和产品ID(Product ID)
    • 示例:输出"Bus 001 Device 002: ID 04f2:b52d"中,

      04f204f204f2

      是厂商ID,

      b52db52db52d

      是产品ID
    • 过滤技巧:配合grep使用,如lsusb | grep 04f2可快速定位特定厂商设备
  • dmesg命令:
    • 功能:显示内核环缓冲区信息,记录设备插拔事件
    • 关键信息:包含设备序列号、驱动加载状态等,如"[100.123456]usb 1-1: New USB device found,idVendor=04f2,idProduct=b52d"
  • 高级用法:通过管道符组合命令,如lsusb | grep 1d6b可筛选特定厂商设备,提高排查效率
2)设备文件生成逻辑揭秘



04:36



  • ttyUSB与ttyACM区别:
    • 协议差异:ttyUSB基于传统USB转串口芯片(如FTDI),ttyACM遵循CDC-ACM协议
    • 应用场景:开发板虚拟串口多采用ttyACM,工业设备常用ttyUSB
  • 设备文件生成:
    • 机制:udev根据sysfs属性信息动态生成设备文件
    • 查看方法:使用ls /dev/tty*命令列出所有串口设备文件
3. udev规则



06:16



1)参数提取黄金三要素



06:23



  • 序列号提取:
    • 命令:udevadm info -a -n /dev/ttyUSB0
    • 字段:ID_SERIAL为设备唯一标识,如"FTDI_FT232R_USB_UART_A9007P1K"
  • 物理路径获取:
    • 字段:ID_PATH反映设备物理连接拓扑,如"pci-0000:00:14.0-usb-0:1:1.0"
  • 厂商ID解析:
    • 字段:ATTRS(idVendor)标识设备厂商,如"0403"对应FTDI公司
2)规则语法深度拆解



07:29



  • SUBSYSTEM:
    • 作用:指定设备子系统类型,如SUBSYSTEM=="tty"匹配串口设备
  • ATTRS:
    • 匹配逻辑:通过设备属性精准定位,如ATTRS(idVendor)=="0403"匹配FTDI设备
  • SYMLINK:
    • 功能:创建持久化符号链接,如SYMLINK+="sensor_imu"生成易记设备名
  • 组合规则示例:
SUBSYSTEM=="tty", ATTRS(idVendor)=="0403", ATTRS(idProduct)=="6015", SYMLINK+="sensor_imu"
3)热插拔调试黑科技



09:21



  • udevadm monitor:
    • 功能:实时监控设备热插拔事件,显示设备状态变化
  • udevadm test:
    • 作用:模拟规则执行过程,验证规则匹配逻辑
  • 调试组合技:
    • 先监控设备事件,再测试规则匹配,快速定位问题
4. 设备绑定技术



10:08



1)设备绑定原理
  • 核心概念:通过唯一标识符(厂商ID和设备ID)将物理设备与逻辑名称绑定
  • 绑定优势:解决设备插拔后编号变化问题(如video0可能变为video1)
  • 典型应用:USB摄像头、串口设备等需要稳定识别的外设
2)设备信息获取
  • 查询命令:
    • lsusb:列出所有USB设备
    • udevadm info:获取设备详细信息
  • 关键参数:
    • idVendor:厂商ID(如05a3)
    • idProduct:设备ID(如9230)
  • 示例输出:Bus 003 Device 010: ID 05a3:9230表示厂商ID05a3,设备ID9230
3)规则文件创建
  • 目录检查:
  • 目录创建:
  • 编辑器选择:
    • vim:功能强大适合高级用户
    • nano:简单易用适合新手
4)权限设置
  • 权限表示:
    • 第一位:所有者权限
    • 第二位:所属组权限
    • 第三位:其他用户权限
  • 常用权限:
    • 6:读写权限(4+2)
    • 4:只读权限
  • 权限设置命令:
5)规则文件编写
  • 基本格式:
  • 参数说明:
    • KERNEL:设备类型匹配模式
    • ATTRS:设备特征匹配条件
    • MODE:设备访问权限
    • SYMLINK:创建的符号链接名称
6)规则生效
  • 重新加载规则:
  • 验证绑定:
  • 应显示类似:/dev/camera -> video1
5. 实战演示
1)设备检测
  • 检测步骤:
    • 插入设备前执行lsusb记录初始状态
    • 插入设备后再次执行lsusb对比新增设备
    • 使用ls /dev/video*查看视频设备节点
2)规则文件编辑
  • 编辑要点:
    • 确保厂商ID和设备ID准确
    • 符号链接名称应具有描述性(如camera、arm等)
    • 权限建议设置为666(所有用户可读写)
3)多设备测试
  • 测试场景:
    • 同时连接多个同类型设备
    • 验证符号链接是否始终指向目标设备
  • 优势体现:
    • 无论设备编号如何变化,符号链接保持稳定
    • 应用程序只需使用符号链接名称即可
6. 常见问题
1)权限问题
  • 现象:设备访问被拒绝
  • 解决方案:
    • 检查规则文件中的MODE值
    • 确认规则文件所有者为root
    • 重新加载规则后重新插拔设备
2)设备识别错误
  • 排查步骤:
    • 确认idVendor和idProduct准确
    • 检查规则文件语法是否正确
    • 查看系统日志dmesg | tail获取错误信息
7. OpenCV基础介绍与应用



27:05



1)OpenCV基础介绍与应用



27:34



  • OpenCV的定义与发展历程

    27:39

    
    • 定义:OpenCV全称为Open Source Computer Vision Library,是一个开源计算机视觉库,具有开源特性,全球开发者可免费使用、修改和分发其代码。
    • 里程碑意义:为计算机视觉领域带来新活力,提供丰富工具和算法,推动技术在安防监控、自动驾驶等领域的广泛应用。
    • 版本迭代:
      • 2.x版本开始支持Python,降低开发门槛
      • 4.x版本升级DNN模块,提升深度学习任务性能
  • OpenCV核心功能解析

    28:18

    
    • 图像处理:
      • 常用函数:imread读取图像,imshow显示图像
      • 优势:简化图像输入输出操作流程
    • 特征检测:
      • 典型应用:Canny函数实现边缘检测
      • 作用:为后续图像分析提供基础特征信息
    • 视频分析:
      • 能力:逐帧处理实现目标跟踪、行为分析
      • 跨平台性:支持多种操作系统和编程语言
  • 图像处理基础:灰度化与二值化

    29:14

    
    • 前置作用:对原始图像进行预处理,提高图像质量,为特征提取奠定基础
    • 灰度化实现:
      • 公式:

        Gray=0.299∗R+0.587∗G+0.114∗BGray = 0.299*R + 0.587*G + 0.114*BGray=0.299∗R+0.587∗G+0.114∗B

      • 过程:将彩色图像每个像素点转换为单一灰度值
    • 二值化实现:
      • 方法:Otsu阈值法通过计算灰度直方图寻找最优阈值
      • 效果:使图像类间方差最大化,突出目标特征
  • 图像处理进阶:滤波与边缘检测

    30:20

    
    • 滤波去噪:
      • 均值滤波:计算邻域像素平均值
      • 高斯滤波:基于高斯函数加权平均,保留更多细节
    • 边缘检测:
      • Canny算法:检测精确边缘,采用双阈值减少虚假边缘
      • Sobel算法:侧重梯度计算,检测较粗边缘
    • 函数参数:
      • 高斯滤波:

        cv2.GaussianBlur()cv2.GaussianBlur()cv2.GaussianBlur()

        需指定卷积核大小和标准差
      • Canny检测:

        cv2.Canny()cv2.Canny()cv2.Canny()

        需设置高低阈值
  • 模板匹配:原理与实现步骤

    31:14

    
    • 核心目标:在大图中定位小模板位置
    • 匹配方法:
      • 数学基础:基于

        TM_CCOEFF_NORMED\mathrm{TM}\_\mathrm{CCOEFF}\_\mathrm{NORMED}TM_CCOEFF_NORMED

        相关性系数
      • 优势:能克服部分光照变化影响
    • 实现步骤:
      • 加载模板图像
      • 滑动窗口遍历大图
      • 计算窗口相似度
      • 定位最佳匹配位置
    • 误差因素:实际应用中需考虑尺度变化和光照差异
  • OpenCV典型应用场景

    31:54

    
    • 医疗领域:X光、CT影像处理,辅助疾病诊断
    • 工业领域:零件缺陷检测(划痕、裂纹等)
    • 安防领域:人脸/车牌识别,实现门禁控制和车辆管理
    • 优势特点:低成本、高灵活性促进广泛应用
2)OpenCV-Python环境搭建



32:11



  • 环境搭建前的准备
    • 工具要求:
      • Python 3.x及以上版本
      • pip包管理器
      • 推荐IDE:PyCharm
    • 版本兼容:
      • OpenCV4.5.5与Python3.9适配良好
      • 需参考官方文档确认版本搭配
    • 镜像配置:建议使用阿里云、清华大学等国内镜像源加速下载
  • Windows系统安装步骤
    • 安装命令:
      • 基础库:pip install opencv-python
      • 扩展库:pip install opencv-contrib-python
    • 验证方法:Python环境下执行import cv2无报错
    • 常见问题:
      • Python版本过高导致不兼容
      • 解决方案:安装虚拟环境或降级Python版本
  • 虚拟机(Linux)安装步骤
    • 基础依赖:
      • Ubuntu系统需先安装开发库:sudo apt-get install相关依赖
    • 环境差异:
      • Linux更依赖命令行操作
      • 图形界面可能需要额外配置
    • 注意事项:文件命名建议使用英文避免兼容性问题
3)项目实战:人脸记录系统
  • 系统架构与核心组件
    • 系统流程:采集→训练→识别→存储
    • 模块功能:
      • 采集模块:获取人脸图像
      • 训练模块:对采集到的人脸数据进行模型训练
      • 识别模块:利用训练好的模型进行实时人脸匹配
      • 存储模块:将相关数据保存
    • 关键技术:
      • 人脸检测器:采用Haar级联分类器,能快速准确检测人脸区域
      • 训练算法:使用LBPH算法,对光照变化有较好适应性
      • 数据存储:选用SQLite数据库,具有轻量级、易操作特点
    • 数据处理:人脸矩阵会转换为灰度图,减少数据量同时突出人脸特征
  • 相关函数介绍
    • CascadeClassifier:
      • 功能:OpenCV中用于创建和管理级联分类器对象的类
      • 模型文件:haarcascade_frontalface_default.xml,基于Haar特征和AdaBoost算法训练
    • LBPHFaceRecognizer_create:
      • 原理:基于图像纹理的识别方法,通过计算局部二值模式的直方图提取特征
      • 优势:适用于算力有限的平台
    • detectMultiScale:
      • 功能:在给定灰度图像中检测对象,返回包含检测对象边界框的列表
      • 输出格式:每个边界框由(x,y,width,height)组成
  • 人脸采集器
    • 采集过程:
      • 摄像头调用:通过cv2.VideoCapture()函数实时获取视频流
      • 人脸处理:
        • 区域裁剪:采用ROI提取方法精准获取人脸部分
        • 数据增强:通过旋转、缩放等操作增加训练数据多样性
    • 数据存储:
      • 格式:将提取的人脸特征向量存储至SQLite数据库
      • 标注信息:包含用户姓名、ID等,方便后续识别和管理
  • 人脸训练器
    • 训练要求:
      • 样本数量:建议每人≥30张,使模型学习更丰富的特征信息
      • 训练函数:使用cv2.face.LBPHFaceRecognizer_create()创建识别器
    • 训练效果:
      • 接口特点:提供简单易用的接口,方便模型训练和调优
      • 准确率影响:训练集大小对模型准确率有重要影响
  • 人脸识别器
    • 识别流程:
      • 读取视频流→检测人脸→特征提取→模型匹配→输出结果
    • 结果显示:
      • 绘制信息:使用cv2.putText()在画面上绘制识别出的姓名和置信度
    • 性能优化:
      • 降低分辨率:减少数据处理量
      • 多线程处理:提高处理效率
  • 系统特点与优化方向
    • 系统优势:
      • 低成本:使用轻量级数据库和算法
      • 易扩展:方便添加新功能模块
      • 跨平台:可在不同操作系统上运行
    • 现存问题:
      • 光照影响:复杂光照下识别率下降
      • 训练耗时:大样本训练需要大量计算资源和时间
    • 优化方向:
      • 模型升级:引入深度学习模型如MTCNN提高准确率
      • 硬件加速:使用GPU加速训练过程
二、人脸识别系统实现要点



47:57



  • 模型加载:系统启动时会自动加载训练好的模型文件models/trainer.yml和用户信息
  • 音频提示:识别到已知人脸时会播放audio_files/test.mp3音频文件作为提示音
  • 操作控制:
    • 按q键可退出程序
    • 按t键可调整识别阈值参数
  • 错误处理:
    • 当出现识别错误时,系统会显示红色"Error"提示
    • 控制台会打印详细的错误信息识别错误:{e}
    • 程序终止时会抛出KeyboardInterrupt异常
三、设备使用常见问题
1. USB设备绑定
  • 设备识别:绑定后的USB设备可插在任意USB接口使用
    • 系统通过设备标识而非接口位置进行识别
    • 更换USB插口不影响设备功能
2. 虚拟机与树莓派对比
  • 兼容性:虚拟机中的操作在树莓派上同样适用
    • 部分库需要在树莓派中单独安装
    • 树莓派性能通常低于虚拟机环境
  • 使用便利性:
    • 虚拟机无需外接显示设备,操作更方便
    • 树莓派需要连接显示屏才能使用
四、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

USB串口绑定原理

通过udev规则实现设备与固定名称的绑定,避免因插拔顺序导致串口号变化

序列号提取方法:udevadm info -a -p查找id_serial字段

权限问题:规则文件中需配置MODE="0666"

⭐⭐⭐

设备识别工具

lsusb显示厂商/产品ID,dmesg查看内核日志,grep过滤关键信息

ID区分:厂商ID可能重复,设备ID唯一

协议差异:ttyUSB(FTDI芯片) vs ttyACM(CDC-ACM协议)

⭐⭐

udev规则编写

规则文件路径:/etc/udev/rules.d/,后缀为.rules

关键语法:SUBSYSTEM=="tty", ATTRS{idVendor}=="xxxx", SYMLINK+="自定义名称"

热插拔调试:udevadm monitor实时追踪,udevadm test模拟规则生效

⭐⭐⭐⭐

OpenCV基础功能

图像处理(灰度化/二值化)、特征检测(边缘识别)、视频分析(目标跟踪)

灰度化公式:RGB加权平均

二值化优化:Otsu算法自动计算阈值

⭐⭐

人脸识别系统

流程:采集→训练→识别

核心算法:Haar级联分类器(人脸检测)、LBPH(特征训练)

数据增强:采集时需多角度/光照变化

延迟优化:降低分辨率或简化模型

⭐⭐⭐⭐

环境配置问题

Python版本兼容性(推荐3.8)、OpenCV库安装(pip install opencv-python)

常见报错:版本冲突需创建虚拟环境

镜像加速:配置国内源(如清华镜像)

⭐⭐

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐