gpt4 book ai didi

android - 在显示在 surfacetexture 上之前获取每个 android.hardware.camera2 帧的数据

转载 作者:太空狗 更新时间:2023-10-29 14:56:10 24 4
gpt4 key购买 nike

在我的 android 应用程序中,我需要获取 android.hardware.camera2 返回的每一帧,对其数据进行一些处理,然后才将其显示在表面纹理上。这个问题与我的相似,但对我没有帮助: Camera preview image data processing with Android L and Camera2 API

我试图从这里获取框架(如问题答案中所建议的那样):

private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
= new ImageReader.OnImageAvailableListener() {

@Override
public void onImageAvailable(ImageReader reader) {

Log.d("Img", "onImageAvailable");
mBackgroundHandler.post(new ImageSaver(reader.acquireNextImage(), mFile));
}

};

这没有用,因为只有在用户执行图像捕获后才会调用回调。而且我不仅在捕获时需要它,我还需要获取发送到相机预览表面的每一帧。我想知道,也许农场可以在这里拍摄(从纹理上看):

public void onSurfaceTextureUpdated(SurfaceTexture texture) {
Log.d("Img", "onSurfaceTextureUpdated");

}

如果是,怎么办?

我正在使用来自谷歌的这个示例作为基础:

https://github.com/googlesamples/android-Camera2Basic

最佳答案

是的,您绝对可以从相机回调中获取缓冲区。您可以提供自己的纹理并在需要时更新它,甚至可以修改此缓冲区的像素数据。

您应该将“原始”SurfaceTexture(在 createCaptureSession() 中指定)推离屏幕,否则它会干扰您过滤/修改的缓冲区。

这种方法的主要警告是,现在您有责任及时生成伪预览缓冲区。

关于android - 在显示在 surfacetexture 上之前获取每个 android.hardware.camera2 帧的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31229953/

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