android - Camera 2 API 可同时预览、记录和提取预览帧以进行 Firebase 人脸检测处理

标签 android face-detection android-camera2

我的用例是当用户开始录制视频时,我需要录制视频并使用 Firebase 人脸检测处理帧内用户脸部的预览帧。我尝试按照以下方式执行此操作,但某些预览已暂停。

我正在使用googlesamples/android-Camera2Video代码库和我在其中添加了以下代码。

Camera2VideoFragment 类内部:

private ImageReader mYUVImageReader;
private final ImageReader.OnImageAvailableListener mOnYUVImageAvailableListener
            = new ImageReader.OnImageAvailableListener() {

   @Override
   public void onImageAvailable(ImageReader reader) {
        Log.d(Camera2VideoFragment.TAG, "Bipin - onImageAvailable ");
   }
}

内部openCamera方法:

mYUVImageReader = ImageReader
                    .newInstance(mPreviewSize.getWidth()/16, mPreviewSize.getHeight()/16,ImageFormat.YUV_420_888, 2);
            mYUVImageReader.setOnImageAvailableListener(
                    mOnYUVImageAvailableListener, mBackgroundHandler);

内部startRecording方法:

   Surface imageSurface = mYUVImageReader.getSurface();
   surfaces.add(imageSurface);
   mPreviewBuilder.addTarget(imageSurface);

我也尝试在 startPreview 中设置 imageSurface 但没有运气,面临相同的预览问题。请提供您的意见或纠正我这种情况的最佳方法是什么?

此处演示应用程序代码:https://github.com/bipinvaylu/Camera2Demo/tree/bipin

更新:[2019 年 1 月 10 日] 我已将其重命名为 mYUVImageReader,请在此处查找详细信息: 初始化:https://github.com/bipinvaylu/Camera2Demo/blob/bipin/app/src/main/java/com/camerademo/Camera2VideoFragment.java#L477 在此处添加 ImageReaderSurface:https://github.com/bipinvaylu/Camera2Demo/blob/bipin/app/src/main/java/com/camerademo/Camera2VideoFragment.java#L540

我主要关心的是,是否可以通过使用同时向预览表面(mTextureView.getSurfaceTexture())、记录(mMediaRecorder.getSurface())和连续图像(mYUVImageReader.getSurface())提供输出相机 2 API?

最佳答案

您还需要将新的 ImageReader Surface 添加到捕获 session 创建中。您不能将 Surface 包含在捕获请求构建器中,除非它也包含在 session 中。

一次可以设置的同步输出数量以及分辨率也受到限制。这些取决于支持的硬件级别和相机设备功能。请参阅 createCaptureSession 的文档对于那些表。

关于android - Camera 2 API 可同时预览、记录和提取预览帧以进行 Firebase 人脸检测处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54091648/

相关文章:

android - 无法安装 APK 的发布版本

android - 添加Appium依赖关系后出现Gradle构建错误

python - 使用opencv从一张图片中裁剪多张人脸并将它们存储在一个文件夹中

android - 致命异常 : java. lang.IllegalArgumentException : Receiver not registered: android. hardware.camera2.CameraManager

Android GridLayout 等列宽

java - 当人脸位于所需帧中时,如何实时启动 ML Kit 人脸检测

c# - 使用 OpenCV/EmguCV 提高人脸检测性能

java - 在不阻塞预览camera2 api的情况下从后台相机预览中捕获图片的可能方法?

Android Camera2 API 闪光问题

javascript - 识别移动设备的纵向或横向模式和缩放级别(但不特定于浏览器)