gpt4 book ai didi

android - 从 TextureView 获取没有转换的位图

转载 作者:行者123 更新时间:2023-11-30 01:31:45 26 4
gpt4 key购买 nike

我目前正在开发一个使用 Camera2 的应用程序。我在缩放和平移的 TextureView 上显示预览(我只需要显示图像的一部分)。我的问题是我需要分析整个图像。

我的 CameraDevice.StateCallback 中有什么:

@Override
public void onOpened(CameraDevice camera) {
mCameraDevice = camera;

SurfaceTexture texture = mTextureView.getSurfaceTexture();
texture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
Surface surface = new Surface(texture);

try {
mPreviewBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
} catch (CameraAccessException e){
e.printStackTrace();
}

try {
mCameraDevice.createCaptureSession(Arrays.asList(surface), mPreviewStateCallback, null);
mPreviewBuilder.addTarget(surfaceFull);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}

在我的 SurfaceTextureListener 中:

@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
my_analyze(mTextureView.getBitmap());
}
});
thread.start();
}

位图只是我在 TextureView 中看到的(这是合乎逻辑的),但我想要整个图像。

这可能吗?

谢谢,镍氯

最佳答案

您可以将帧发送到您创建的 SurfaceTexture,而不是 TextureView 的一部分,然后通过将它们渲染到 GLES pbuffer 并使用 glReadPixels() 读回它们来获取像素。

如果您可以使用 YUV 而不是 RGB,则可以通过将 Camera2 输出定向到 ImageReader 来更快、更简单地获取数据。 .

Grafika有一些有用的例子,例如“来自相机的纹理”。

关于android - 从 TextureView 获取没有转换的位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35656400/

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