【问题标题】:Using the raw camera byte[] array for augmented reality将原始相机字节 [] 数组用于增强现实
【发布时间】:2011-09-28 06:01:21
【问题描述】:

我正在开发增强现实应用程序,因此我需要捕获相机预览,为其添加视觉效果,并将其显示在屏幕上。我想使用PreviewCallbackonPreviewFrame 方法来做到这一点。这给了我一个 byte[] 变量,其中包含要处理的原始图像数据(YUV420 编码)。

尽管我搜索了很多小时的解决方案,但我找不到将这个 byte[] 变量转换为我可以使用甚至在屏幕上绘制的任何图像格式的方法。

我最好将byte[] 数据转换为可用于计算和绘图的某种 RGB 格式。

有没有合适的方法来做到这一点?

【问题讨论】:

  • 请不要在标题中添加标签。

标签: android image image-processing augmented-reality android-camera


【解决方案1】:

几个月前,当我不得不做一些事情时,我偶然发现了同样的问题 相机帧的边缘检测。这对我来说非常有效。 试试看。

public void surfaceChanged(SurfaceHolder holder,int format, int width,int height) 
        {
            camera.setPreviewCallback(new PreviewCallback() {

                public void onPreviewFrame(byte[] data, Camera camera) {

                    Camera.Parameters parameters = camera.getParameters();

                    int width = parameters.getPreviewSize().width;
                    int height = parameters.getPreviewSize().height;

                    ByteArrayOutputStream outstr = new ByteArrayOutputStream();
                    Rect rect = new Rect(0, 0, width, height); 
                    YuvImage yuvimage=new YuvImage(data,ImageFormat.NV21,width,height,null);
                    yuvimage.compressToJpeg(rect, 100, outstr);
                    Bitmap bmp = BitmapFactory.decodeByteArray(outstr.toByteArray(), 0, outstr.size());
                }
}
}

您现在可以将位图用于所有处理目的。 获得感兴趣的像素,您就可以轻松地做 RGB 或 HSV 的东西。

【讨论】:

  • 谢谢!这是一个真正有效的干净简单的代码。但是,如果我将此位图绘制到 ImageView 上,我会得到大约 2 fps 的帧速率。对此有何提示/建议?
  • 对此没什么想法。我的fps也很低。但是你的问题向我揭示了一些东西。我认为这是我的边缘检测需要时间。我从没想过将位图绘制到 imageview 也可能是一个减速因素。
  • 在图像视图上绘制位图不需要时间,边缘检测也不需要任何相当长的时间。这里的罪魁祸首是ByteArray到Bitmap对象的转换。
【解决方案2】:

Imran Nazar 编写了关于增强现实的两部分教程,您可能会发现它很有用。尽管他最终使用了 NDK,但 first part 和大部分 second part 详细说明了仅使用 Java 所需的内容。

我相信Bitmap.createBitmap是你需要的方法。

【讨论】:

  • 谢谢。我相信 Nazar 在预览之上使用预览和位图绘图。不幸的是,与直接叠加相比,由于额外的计算,这可能导致叠加滞后于预览。或者我读过。
  • 也许可以,但他的示例说明了如何应用矩阵并创建位图对象。
猜你喜欢
  • 2014-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
相关资源
最近更新 更多