×

使用Xbox Kinect和OpenCV进行面部识别

消耗积分:0 | 格式:zip | 大小:0.00 MB | 2023-07-04

彭友旺

分享资料个

描述

背景

当我在我的衣橱里翻找时,我偶然发现了一件过去的遗物……原来的 XBox 360 Kinect!

它被高度赞扬为当时最复杂的传感器阵列之一,人们一直在破解它来制作一些非常酷的项目。

老实说,当我第一次看示例代码时,我不知所措……

在我能找到的所有示例中,每个人都从以下内容开始:

using namespace cv;
using namespace Freenect;
using namespace std;

我讨厌这个^^^

当您不了解正在使用的任何框架或库时,它会将任何示例代码转换为 API 汤。此外,很难判断多个库是如何相互交互的。

我做的第一件事是逐行浏览 中的示例代码glview.c,研究和记录每个 API 调用。这非常乏味,但它确实让我了解了逻辑是如何流动的,我终于能够区分对libfreenect的调用和对OpenGL的调用

如果有帮助,我将记录的代码添加到存储库中。它在功能上等同于其原始对应物,但有大量文档。

通过 Kinect 的眼睛

我知道硬件现在已经过时了,但 Kinect 仍然是一个令人难以置信的令人印象深刻的硬件。我被吹走了!

Kinect 上的摄像头能够达到 1280 x 1024,这没什么值得大书特书的——但它仍然是一款坚固的摄像头。

然而,真正令人印象深刻的功能是深度传感器。

pYYBAGOYOhOAah5SAAD5TS6BDr0584.png
仔细看,你可以看到面部特征(眼睛、鼻子、脸颊、嘴巴、额头)
 

让我看看你的微笑

。。。不幸的是,API 和包装器的可扩展性不是很好。它们需要完全重写,以允许使用参数化分辨率创建对象。创建这样的组合将是 CRTP 奇怪重复的模板模式)的一个有趣用例。但是,我将把重构留到另一天。我计划按原样提供我创建的示例,并选择在相应的博客文章中记下缺点。

2020 年 5 月 28 日——当我最终确定源代码并准备分享时,我在笔记中注意到我原本打算让它在 Raspberry Pi 上运行。幸运的是,我已经创建了 Dockerfile,所以这实际上只是在 ARM 上重建映像——或者我是这么认为的……结果我将 Raspberry Pi 配置为没有 GUI。所以我创建了一个无头版本的程序。这需要重写cv::waitKey,因为它依赖于 HighGUI 库,即 OpenCV 窗口框架。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !