当我在我的衣橱里翻找时,我偶然发现了一件过去的遗物……原来的 XBox 360 Kinect!
它被高度赞扬为当时最复杂的传感器阵列之一,人们一直在破解它来制作一些非常酷的项目。
老实说,当我第一次看示例代码时,我不知所措……
在我能找到的所有示例中,每个人都从以下内容开始:
using namespace cv;
using namespace Freenect;
using namespace std;
我讨厌这个^^^ 。
当您不了解正在使用的任何框架或库时,它会将任何示例代码转换为 API 汤。此外,很难判断多个库是如何相互交互的。
我做的第一件事是逐行浏览 中的示例代码glview.c
,研究和记录每个 API 调用。这非常乏味,但它确实让我了解了逻辑是如何流动的,我终于能够区分对libfreenect的调用和对OpenGL的调用。
如果有帮助,我将记录的代码添加到存储库中。它在功能上等同于其原始对应物,但有大量文档。
我知道硬件现在已经过时了,但 Kinect 仍然是一个令人难以置信的令人印象深刻的硬件。我被吹走了!
Kinect 上的摄像头能够达到 1280 x 1024,这没什么值得大书特书的——但它仍然是一款坚固的摄像头。
然而,真正令人印象深刻的功能是深度传感器。
。。。不幸的是,API 和包装器的可扩展性不是很好。它们需要完全重写,以允许使用参数化分辨率创建对象。创建这样的组合将是 CRTP (奇怪重复的模板模式)的一个有趣用例。但是,我将把重构留到另一天。我计划按原样提供我创建的示例,并选择在相应的博客文章中记下缺点。
2020 年 5 月 28 日——当我最终确定源代码并准备分享时,我在笔记中注意到我原本打算让它在 Raspberry Pi 上运行。幸运的是,我已经创建了 Dockerfile,所以这实际上只是在 ARM 上重建映像——或者我是这么认为的……结果我将 Raspberry Pi 配置为没有 GUI。所以我创建了一个无头版本的程序。这需要重写cv::waitKey
,因为它依赖于 HighGUI 库,即 OpenCV 窗口框架。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !