有可能吗?
我正在学习,我想要提示和链接到可以帮助我的教程。
谢谢!
答案 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
Adobe与John Mayer合作开展了一个项目,可以在这个YouTube视频中看到:
http://www.youtube.com/watch?v=CZtRHVMcZjI
...或者使用网络摄像头打印图标和演示: