我刚刚开始在安卓上研究ARToolkit,我所看到的例子依赖于从设备摄像头中识别视频流中的标记。
是否有可以使用图像(例如,包含2D条形码标记的普通JPG文件)的示例?或者,有没有办法在标记出现时暂停视频流或抓取单个帧?
我意识到这可能听起来很奇怪,但我对一个特定的用例很感兴趣。
发布于 2015-10-31 11:55:19
在除安卓以外的所有平台上,你都可以使用“”视频输入模块。这是一个替代的视频捕获模块,它只是循环通过一个或多个JPEG图像。您可以通过将视频配置字符串更改为以下内容来请求此视频模块:
-device=Image -image="/path/to/image0.jpeg" -image="/path/to/image1.jpeg"
在Android上,如果你正在构建一个Java ARToolKit for Android应用程序,一种可能的选择是自己在Java环境中加载图像,并将该图像推送到本地跟踪例程中,而不是从摄像头流中推送图像。拦截图像推送的最简单位置是ARBaseLib/src/org/artoolkit/ar/base/ARToolKit.java's convertAndDetect()方法。arwAcceptVideoImage的' frame‘参数是指向NV12编码视频帧的指针。
如果你在安卓系统上使用ARToolKit for Unity,同样的建议也适用,只是arwAcceptVideoImage调用的位置不同。相反,它位于onPreviewFrame方法的org/artoolkit/ar/unity/CameraSurface文件中的UnityARPlayer类中。
抱歉,我不能建议一个更简单的方法。用于安卓系统的ARToolKit在视频来源方面并没有太大的灵活性。
发布于 2016-05-14 07:21:43
是的,我已经做到了。
如果你将看到它的流程,相机帧被抓取为字节数组,该数组被发送到渲染器类和标记检测部分,后者显示为背景图像,标记检测部分检测标记并生成转换矩阵。
因此,您可以做的是读取位图格式的图像,并将其更改为相同的格式数组(作为抓取的帧),然后输入此数组用于渲染和检测部分。
如果您想在一帧暂停视频,您可以只复制输入图像数组的实例,然后连续仅将该数组馈送到渲染和检测部分。
发布于 2017-04-10 01:11:23
或者截取cameraPreviewFrame(最终byte[]数据),并使用正确格式的位图加载数据数组。
https://stackoverflow.com/questions/33426538
复制相似问题