gpt4 book ai didi

android - 如何在处理后手动显示来自 Camera.Preview 回调的帧,无需 Camera.Preview

转载 作者:行者123 更新时间:2023-11-29 02:15:26 28 4
gpt4 key购买 nike

我构建了一个人脸检测应用程序,我从 onPreviewFrame 获取帧,进行人脸检测,然后在 surfaceView 上方的 Canvas 上绘制一个圆圈。问题是当 Camera.StartPreview() 启动时,使用 surfaceview 线程自动显示帧。这显然是 PreviewCallback 启动所必需的。由于处理、人脸检测和绘图是在单独的线程中完成的(我在这里假设),显示的帧和该帧的结果之间有 2 秒的延迟正在处理并绘制在 Canvas 上。

我想要做的是停止显示帧的相机预览并在处理后自己显示它们。我认为这具有三个好处:

延迟消失。

我可以直接在位图上绘制,而不是在 Canvas 上绘制,这是无用的,因为您无法撤消所做的操作。

通过避免两个线程使用同一图像,这将有助于保持较低的内存消耗。

我读到可以从 previewCallback 显示帧,有人知道如何以及如何停止自动显示帧吗?

非常感谢。

最佳答案

James,我在这里找到了一个解决方案,如果你想停止相机预览,只需注释掉两行(我想你使用 CameraPreview.java 作为开始)//Camera.setPreviewDisplay(holder);//setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);这意味着camera不会使用surface显示预览,所以可以直接使用回调数据显示,但是效率很低,模拟器上只有1fps,不过,我觉得这是一个解决方案,并且那么接下来就可以考虑如何更高效的画框了

祝你好运,我想知道这个解决方案对你是否合适:)

关于android - 如何在处理后手动显示来自 Camera.Preview 回调的帧,无需 Camera.Preview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346365/

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