百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

基于OpenCV的人脸追踪

itomcoil 2025-02-06 15:16 31 浏览

在Raspberry上启动项目很简单,所以让我们开始吧。


01. 产品清单


  • Raspberry Pi 4 Model B — 4GB
  • 适用于Raspberry Pi的Pan-Tilt HAT
  • Pi Camera v2 8MP
  • 微型SD卡
  • 迷你HDMI电缆
  • Raspberry Pi摄像头电缆—尺寸:457mm x 16mm(18“ x 0.6”)
  • USB-C充电器
  • USB-C外接电池(强烈建议选购)

云台HAT的选择是非常重要的。因为我们必须找到一种控制Pan-Tilt HAT的方法。我们使用的是Waveshare的Pan-Tilt HAT,小伙伴们可能需要花费一些时间来了解如何通过键盘或者通过HAT手动控制伺服电机。USB-C输出的电池对于Raspberry上的项目(其中Raspberry必须是可移动的)非常有用。


02. 软件安装


安装Raspberry操作系统:您可以选择任何Python可以正常运行的系统。这是Raspberry OS的官方页面:https :
//www.raspberrypi.org/downloads。推荐使用
Raspberry Pi OS

  • 为树莓派启用Pi相机
  • 在Raspberry上启用SSH
  • 安装Python,建议使用版本3
  • 建议安装OpenCV 4.2版
  • 如果Python缺少某些模块,请不要担心,并在Raspberry或Python社区中搜索其安装


03. 通过键盘控制云台相机


这部分对我们来说比较困难,为什么会有一定的困难?因为,有两种方法可以控制伺服电机:

  • 直接将伺服电机插入Raspberry,然后直接通过Raspberry控制它们,在这种情况下,需要使用GPIO接口
  • 将伺服电机插入HAT平台,然后将HAT插入Raspberry。因此,我们需要先控制HAT平台,然后再由HAT平台控制我们的伺服电机。在这种情况下可以使用waveshare PCA9685提供的给定驱动程序


04. 云台伺服电机校准


这部分虽然不是强制性的,但强烈建议使用。

伺服轴的螺丝

重要的是,一开始就不要拧紧伺服轴的螺钉,只需以可以自由旋转的方式稍微固定一下即可。使用键盘上的控件,大家可以尝试在0位置旋转舵机,然后将摄像机移动到首选的起始位置,现在可以拧紧伺服轴的螺钉。(云台螺钉在底座下方,因此我们需要在基座上安装云台,然后进行校准,拆卸和拧紧云台螺钉,然后再重新安装)


05. 人脸跟踪编码


>使用默认情况下随OpenCV一起提供的预安装CascadeClassifier来使操作变得简单。我们的工作重点是如何控制平移和倾斜角度。

CascadeClassifier具有在OpenCV目录+
/data/haarcascade_frontalface_default.xml中找到的正面人脸识别的预训练

所述CascadeClassifier给我们直接一组用于帧中的每个检测到的面部信息(X,Y,W,H)。(x,y)是检测到的面部的左上角的位置,(w,h)是检测到的面部的高度和与之的距离,根据这些信息,我们可以计算出检测到的面部的中心。

>脸部中心

当我们得到(x,y)时,将控制我们的摇摄和俯仰伺服器将摄像机移动到面部中心应靠近镜框中心的位置

>PD控制器

为什么是伪PD?因为我们的伺服器没有位置传感器,所以我们不知道机器人摄像头的摇摄角度和倾斜角度。因此,我们不能严格使用反馈控制。我使用了一个伪PD控制器,该控制器仅使用delta_PAN来递增/递减相机的pan-angle(resp。til-angle):

delta_PAN = k_PAN * delta_x + kd_PAN * delta_x_dot

大致来说,它是一种前馈控制器。

如果您在我们没有有关伺服器位置的信息时找到了一种更好的控制方式,请给我发送电子邮件告知我。

>拓展

我尝试添加一些随机消息模块:

  • bonjour:相机第一次检测到脸部时的随机欢迎消息
  • cachecache:当我们在相机前停留太长时间时,随机显示“远离我”消息
  • 缺少:什么都没检测到的随机消息

但是,添加这些消息有时会使算法产生一定的滞后。因此,大家可以消除这些模块以使相机更快。

>多脸检测

CascadeClassifier可以在一帧中找到多张脸,但是我将PD控制器限制为仅检测到一张脸1张脸的情况。轮到您改善此问题了。一种想法是计算检测到的面部的质心。

代码链接:https :
//github.com/nguyenrobot/palt-tilt-cam

相关推荐

MySQL修改密码_mysql怎么改密码忘了怎么办

拥有原来的用户名账户的密码mysqladmin-uroot-ppassword"test123"Enterpassword:【输入原来的密码】忘记原来root密码第一...

数据库密码配置项都不加密?心也太大了吧!

先看一份典型的配置文件...省略...##配置MySQL数据库连接spring.datasource.driver-class-name=com.mysql.jdbc.Driverspr...

Linux基础知识_linux基础入门知识

系统目录结构/bin:命令和应用程序。/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev:dev是Device(设备)的缩写,该目录...

MySQL密码重置_mysql密码重置教程

之前由于修改MySQL加密模式为mysql_native_password时操作失误,导致无法登陆MySQL数据库,后来摸索了一下,对MySQL数据库密码进行重置后顺利解决,步骤如下:1.先停止MyS...

Mysql8忘记密码/重置密码_mysql密码忘了怎么办?

Mysql8忘记密码/重置密码UBUNTU下Mysql8忘记密码/重置密码步骤如下:先说下大概步骤:修改配置文件,使得用空密码可以进入mysql。然后置当前root用户为空密码。再次修改配置文件,不能...

MySQL忘记密码怎么办?Windows环境下MySQL密码重置图文教程

有不少小白在使用Windows进行搭建主机的时候,安装了一些环境后,其中有MySQL设置后,然后不少马大哈忘记了MySQL的密码,导致在一些程序安装及配置的时候无法进行。这个时候怎么办呢?重置密码呗?...

10种常见的MySQL错误,你可中招?_mysql常见错误提示及解决方法

【51CTO.com快译】如果未能对MySQL8进行恰当的配置,您非但可能遇到无法顺利访问、或调用MySQL的窘境,而且还可能给真实的应用生产环境带来巨大的影响。本文列举了十种MySQL...

Mysql解压版安装过程_mysql解压版安装步骤

Mysql是目前软件开发中使用最多的关系型数据库,具体安装步骤如下:第一步:Mysql官网下载最新版(mysql解压版(mysql-5.7.17-winx64)),Mysql官方下载地址为:https...

MySQL Root密码重置指南:Windows新手友好教程

如果你忘记了MySQLroot密码,请按照以下简单步骤进行重置。你需要准备的工具:已安装的MySQL以管理员身份访问命令提示符一点复制粘贴的能力分步操作指南1.创建密码重置文件以管理员...

安卓手机基于python3搜索引擎_python调用安卓so库

环境:安卓手机手机品牌:vivox9s4G运行内存手机软件:utermux环境安装:1.java环境的安装2.redis环境的安装aptinstallredis3.elasticsearch环...

Python 包管理 3 - poetry_python community包

Poetry是一款现代化的Python依赖管理和打包工具。它通过一个pyproject.toml文件来统一管理你的项目依赖、配置和元数据,并用一个poetry.lock文件来锁定所有依赖的精...

Python web在线服务生产环境真实部署方案,可直接用

各位志同道合的朋友大家好,我是一个一直在一线互联网踩坑十余年的编码爱好者,现在将我们的各种经验以及架构实战分享出来,如果大家喜欢,就关注我,一起将技术学深学透,我会每一篇分享结束都会预告下一专题最近经...

官方玩梗:Python 3.14(πthon)稳定版发布,正式支持自由线程

IT之家10月7日消息,当地时间10月7日,Python软件基金会宣布Python3.14.0正式发布,也就是用户期待已久的圆周率(约3.14)版本,再加上谐音梗可戏称为π...

第一篇:如何使用 uv 创建 Python 虚拟环境

想象一下,你有一个使用Python3.10的后端应用程序,系统全局安装了a2.1、b2.2和c2.3这些包。一切运行正常,直到你开始一个新项目,它也使用Python3.10,但需要...

我用 Python 写了个自动整理下载目录的工具

经常用电脑的一定会遇到这种情况:每天我们都在从浏览器、微信、钉钉里下各种文件,什么截图、合同、安装包、临时文档,全都堆在下载文件夹里。起初还想着“过两天再整理”,结果一放就是好几年。结果某天想找一个发...