用网络摄像头检测手心的增强现实

时间:2011-11-14 15:42:27

标签: flash webcam augmented-reality

有可能吗?

我正在学习,我想要提示和链接到可以帮助我的教程。

Augmented Reality

谢谢!

3 个答案:

答案 0 :(得分:1)

这里可以找到一个非常简单的例子(虽然在flash中): http://www.adobe.com/devnet/flash/articles/augmented_reality.html

它使用papervision,flar和flex sdk来做你需要的事情。 如果您熟悉动作脚本,则可以将其与您的动作一起运行 在几个小时内拥有自己的图像和模型(改变需要检测的模式花费我大约10分钟来弄清楚如何)

此示例在黑白图像上使用模式识别,因此它也应该能够识别形状。

有一个捆绑的工具,可以从图像创建一个模式文件, 你需要做的就是从你发布的图像中切出心形, 将其转换为黑/白并制作图案。

由于您的网络摄像头会创建彩色视频,因此您可能需要将其转换为灰度 为了工作。

我认为通常需要进行大量调整才能使其发挥作用,但这不应该是不可能的

答案 1 :(得分:1)

我刚用haccascades和opencv做了类似的程序。我相信它很容易与ARToolKit联系在一起。看看我的教程。 http://danielscvtutorials.blogspot.com/p/impress-that-special-someone-with.html

我能够使用此代码将ARToolKit绑定到OpenCv。出于某种原因,ARToolKit想要使用ARGB而不是BGR或RGBA。

ARUint8 rgbTmp[3];
for(int y=0; y < image_opencv->height; y++) {
    for(int x=0; x < image_opencv->width; x++) {
        rgbTmp[0] = image_opencv->imageData[image_opencv->widthStep * y + x*3]; // B
        rgbTmp[1] = image_opencv->imageData[image_opencv->widthStep * y + x*3 + 1]; // G
        rgbTmp[2] = image_opencv->imageData[image_opencv->widthStep * y + x*3 + 2]; // R
        frame->imageData[frame->widthStep * y + x*4] = 255; // A
        frame->imageData[frame->widthStep * y + x*4 + 1] = rgbTmp[2]; // R
        frame->imageData[frame->widthStep * y + x*4 + 2] = rgbTmp[1]; // G
        frame->imageData[frame->widthStep * y + x*4 + 3] = rgbTmp[0]; // B
    }
}
ARUint8 *arImage = (ARUint8 *)frame->imageData; // This is very fast conversion

答案 2 :(得分:0)

这可以使用FLARToolKit或Flash增强现实工具包来完成。

http://www.libspark.org/wiki/saqoosha/FLARToolKit/en

Adob​​e与John Mayer合作开展了一个项目,可以在这个YouTube视频中看到:

http://www.youtube.com/watch?v=CZtRHVMcZjI

...或者使用网络摄像头打印图标和演示:

http://www.johnmayer.com/ar/