11

假设用户拥有像 Chrome 这样的现代浏览器并启用必要的 HTML5 摄像头设置(这样可以getUserMedia正常工作),如何使用 JavaScript 检测网络摄像头视线中显示的特定预定义对象?

例如,基于 HTML5/JS 的人脸检测效果很好,我看到了另一个手部检测演示(在这里效果不佳;我可能做错了什么)。训练相机以检测给定的(开发人员)选择的其他对象的必要步骤是什么?比如说,我想让凸轮识别红笔的位置;或者也许是视线中最黑暗的物体;或者也许是一部黑色的 iPhone 对着相机挥手等等。

谢谢!

4

2 回答 2

5

对象检测本身就是一项非常棘手的工作。在确定最佳方法之前,您必须了解您的对象是什么,是否平滑、灵活、是否有很多颜色对比、快速移动以及很多其他问题。

此外,这取决于您是只想检测一个物体,还是想在它在相机前的移动过程中对其进行跟踪。

我将在这里仅命名几个方法,因为我没有时间详细说明。知道名称后,您可能会在 Google 上找到很多文档,但请注意,如果您必须自己实现它们,则可能需要一些数学技能。因此,这通常涉及:

  • 在有趣的点计算描述符。查看 Google 上的SIFTHoG(梯度直方图)描述符,这些是最常用的描述符。
  • 建立某种识别结构,这同样可以根据您的对象和描述符而发生很大变化。流行的方法包括神经网络支持向量机。对于移动对象,您通常可以在组合中添加与图形相关的技术,例如Graph Cuts

同样,根据对象,这些甚至可能不是正确的方法。

据我所知,在 JavaScript 中可用的软件非常少,但如果你确实找到了一些东西,我会很高兴知道。同样,这里有一些指示:

  • 您的人脸检测示例使用了一种非常流行的方法,称为级联分类器,它在更流行的库 OpenCV 中可用,并且被大多数人认为是人脸检测首选方法。
  • 如果您可以考虑将部分处理移至服务器,则可以使用具有大量可用算法的OpenCV 。

我希望我能帮助你开始一点点;)

于 2012-07-12T21:19:49.273 回答
1

除了 FX 的回答之外,一旦您训练了分类器或从网络上选择了一个免费提供的分类器,您就可以使用 OpenCV 端口(例如js-objectdetectHAAR.js)进行实际检测。

于 2012-09-05T03:08:26.033 回答