gpt4 book ai didi

android - CPU 处理相机图像

转载 作者:行者123 更新时间:2023-11-29 01:23:35 25 4
gpt4 key购买 nike

目前我正在屏幕上显示相机预览,提供相机预览纹理 - camera.setPreviewTexture(...)(当然是使用 opengl 进行)。

我有一个本地库,它获取 bytes[] 作为图像,并返回 byte[] - 与输入图像相关的结果图像。我想调用它,然后将输入图像和结果绘制到屏幕上 - 彼此叠加。

我知道在 Opengl 中,为了将纹理数据返回到 CPU 中,我们必须使用 glReadPixel 读取它,并且在处理之后我必须将结果加载到纹理中 - 这每帧都将对性能产生重大影响。

我考虑过使用 camera.setPreviewCallback(...),我正在获取框架(调用处理方法并将结果传输到我的 SurfaceView),然后并行继续使用用于在屏幕上绘制的纹理预览技术,但我担心在 previewCallback 中获得的帧与我在纹理中获得的帧之间同步。

我错过了什么吗?或者没有简单的方法来解决这个问题?

最佳答案

一种可能有用的方法是将相机的输出定向到 ImageReader。 ,它提供了一个表面。发送到 Surface 的每一帧都作为 YUV 数据提供,无需副本,这使得它比某些替代方案更快。颜色格式(步幅、对齐、交错)的变化由 ImageReader 处理。

由于您希望相机图像与处理输出同时呈现,因此您不能沿着两条独立的路径发送帧。

框架准备就绪后,您需要进行颜色空间转换并使用 glTexImage2D() 上传像素。这可能是性能限制因素。

从评论来看,您似乎很熟悉使用 fragment 着色器进行图像过滤;对于发现此问题的任何其他人,您可以查看示例 here .

关于android - CPU 处理相机图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35343000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com