相关疑难解决方法(0)

将YUV_420_888转换为JPEG并保存文件会导致图像失真

我在我的git repo中使用了/sf/answers/2810650321/ImageUtil提供的类:https://github.com/ahasbini/cameraview/tree/camera_preview_imp(注意实现在分支中)到实现帧预览回调.一个被设置为预览在帧格式将被转换成使用类,并将其发送给帧的回调.演示应用程序每50帧将回调帧保存到文件中.所有保存的帧图像都会失真,类似于以下内容:camera_preview_impImageReaderImageFormat.YUV_420_888ImageFormat.JPEGImageUtil

在此输入图像描述

如果我通过执行以下更改而改为ImageReader使用:ImageFormat.JPEGCamera2

mPreviewImageReader = ImageReader.newInstance(previewSize.getWidth(),
    previewSize.getHeight(), ImageFormat.JPEG, /* maxImages */ 2);
mCamera.createCaptureSession(Arrays.asList(surface, mPreviewImageReader.getSurface()),
    mSessionCallback, null);
Run Code Online (Sandbox Code Playgroud)

图像正常运行而没有任何失真,但帧速率显着下降,视图开始滞后.因此,我认为ImageUtil班级没有正确转换.

android image android-camera

4
推荐指数
1
解决办法
3422
查看次数

CameraX 相机加载速度慢

因此,我从使用旧版相机 api 迁移到了 CameraX,尽管设置起来非常简单,但我注意到了一个问题。现在,如果不是比以前更长的时间开始显示预览,相机似乎需要几乎两倍的时间。我正在 Galaxy s7 上进行测试。我的代码如下所示:

val previewConfig = PreviewConfig.Builder().apply {
    setTargetAspectRatio(Rational(1, 1))
    setTargetResolution(Size(binding.codeScannerView.width, binding.codeScannerView.height))
}.build()

val preview = Preview(previewConfig)

preview.setOnPreviewOutputUpdateListener { preview ->
    val parent = binding.codeScannerView.parent as ViewGroup
    parent.removeView(binding.codeScannerView)
    parent.addView(binding.codeScannerView, 0)
    binding.codeScannerView.surfaceTexture = preview.surfaceTexture
}

val analyzerConfig = ImageAnalysisConfig.Builder().apply {
    val analyzerThread = HandlerThread(
            "QrCodeReader").apply { start() }
    setCallbackHandler(Handler(analyzerThread.looper))
    setImageReaderMode(
            ImageAnalysis.ImageReaderMode.ACQUIRE_LATEST_IMAGE)
}.build()

val analyzerUseCase = ImageAnalysis(analyzerConfig).apply {
    analyzer = QrCodeAnalyzer(requireContext(), Handler(), { qrCode ->
        if (activity == null) {
            return@QrCodeAnalyzer
        }
        presenter.disableCameraPreview()
        presenter.updateTable(qrCode.toLowerCase().parseTableId(), isFromOrder, Screens.MENU_SCREEN)
    })
} …
Run Code Online (Sandbox Code Playgroud)

android android-camerax

3
推荐指数
1
解决办法
1691
查看次数

CameraX Image analysis的imageproxy大小和PreviewView大小不一样

我正在尝试使用 Firebase 的 MLKit 通过 Camerax 进行人脸检测。我很难让图像分析的图像代理大小与 PreviewView 的大小相匹配。对于图像分析和 PreviewView,我已将 setTargetResolution() 设置为 PreviewView 的宽度和高度。但是,当我在分析器中检查 Imageproxy 的大小时,它的宽度为 1920,高度为 1080。我的 PreviewView 宽度为 1080,高度为 2042。当我在 setTargetResolution() 中交换宽度和高度以进行图像分析时,imageproxy 中的宽度和高度都为 1088。我的预览视图也被锁定为纵向模式。

最终,我需要将原始图像代理数据和人脸点数据输入到 AR 代码中。因此,仅放大绘制面部点的图形叠加对我来说不起作用。

问:如果无法在 camerax 库中解决此问题,如何缩放从分析器返回的图像代理以匹配预览视图?

我正在使用 Java 和最新的 Camerax 库:

def camerax_version = "1.0.0-beta08"

android analysis image android-camerax

3
推荐指数
1
解决办法
1971
查看次数