使用原始相机 byte[] 数组实现增强现实
我正在开发一个增强现实应用程序,因此我需要捕获相机预览,为其添加视觉效果,并将其显示在屏幕上。我想使用 PreviewCallback
的 onPreviewFrame
方法来执行此操作。这为我提供了一个包含原始图像数据(YUV420 编码)的 byte[]
变量以供使用。
尽管我搜索了多个小时的解决方案,但我找不到一种方法将此 byte[]
变量转换为我可以使用甚至在屏幕上绘制的任何图像格式。
我最好将 byte[] 数据转换为某种可用于计算和绘图的 RGB 格式。
有没有正确的方法来做到这一点?
I'm developing an Augmented Reality app, so I need to capture the camera preview, add visual effects to it, and display it on screen. I would like to do this using the onPreviewFrame
method of PreviewCallback
. This gives me a byte[]
variable containing raw image data (YUV420 encoded) to work with.
Even though I searched for a solution for many hours, I cannot find a way to convert this byte[]
variable to any image format I can work with or even draw on the screen.
Preferably, I would convert the byte[]
data to some RGB format that can be used both for computations and drawing.
Is there a proper way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
几个月前,当我不得不做一些事情时,我偶然发现了同样的问题
相机帧上的边缘检测。这对我来说非常有效。
尝试一下。
您现在可以将位图用于所有处理目的。
获取感兴趣的像素,您就可以轻松地进行 RGB
或者上面有HSV的东西。
I stumbled upon the same issue a few months back when I had to do some
edge detection on the camera frames. This works perfectly for me.
Try it out.
You can use the bitmap for all your processing purposes now.
Get the interested pixel and you can comfortably do your RGB
or HSV stuff on it.
Imran Nazar 编写了有关增强现实的两部分教程,您可能会发现它很有用。尽管他最终使用了 NDK,第一部分大部分第二部分详细介绍了您需要的内容仅使用爪哇。
我相信 Bitmap.createBitmap 是您需要的方法。
Imran Nazar has writen a two part tutorial on augmented reality which you may find useful. Although he eventually uses the NDK, the first part and most of the second part detail what you need using just Java.
I believe Bitmap.createBitmap is the method you need.