当前位置: 首页 > 知识库问答 >
问题:

三星设备上的Android摄像头API图像模糊

水渊
2023-03-14

在为inApp相机实施camera2 API后,我注意到在三星设备上图像显得模糊。搜索之后,我找到了Sasmung Camera SDK(http://developer.samsung.com/galaxy#camera)。因此,在三星Galaxy S7上实施SDK后,图像现在很好,但在Galaxy S6上它们仍然模糊不清。有人在三星设备上遇到过这些问题吗?

编辑:补充@rcsumners的评论。我正在使用设置自动对焦

mPreviewBuilder.set(SCaptureRequest.CONTROL_AF_TRIGGER, SCaptureRequest.CONTROL_AF_TRIGGER_START);
mSCameraSession.capture(mPreviewBuilder.build(), new SCameraCaptureSession.CaptureCallback() {
            @Override
            public void onCaptureCompleted(SCameraCaptureSession session, SCaptureRequest request, STotalCaptureResult result) {
                isAFTriggered = true;
            }
        }, mBackgroundHandler);

这是一种长曝光图像,用户必须拍摄静态非运动物体的图像。为此,我使用CONTROL_AF_MODE_MACRO

mCaptureBuilder.set(SCaptureRequest.CONTROL_AF_MODE, SCaptureRequest.CONTROL_AF_MODE_MACRO);

如果可用,我也会启用自动闪光

requestBuilder.set(SCaptureRequest.CONTROL_AE_MODE,
                SCaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);

我不是这个API的专家,我主要关注SDK示例应用程序

共有2个答案

狄河
2023-03-14

您正在为一帧设置自动对焦触发器,但您是否正在等待自动对焦完成?对于AF_MODE_MACRO(您是否正在验证设备列表是否支持此AF模式?)在保证图像稳定和清晰之前,您需要等待AF_STATE_FOCUS_LOCKED。(如果AF算法无法达到清晰焦点,您也可能会收到NOT_FOCUSED_LOCKED,这可能是因为对象离镜头太近,或者场景太混乱。)

在大多数现代设备上,建议使用CONTINUOUS_PICTURE,不要担心自动对焦触发,除非你真的想在一段时间内锁定焦点。在这种模式下,设备会不断尝试尽其所能聚焦。首先,我不确定是否有那么多设备支持MACRO。

施自怡
2023-03-14

可能有许多问题导致此问题。一个突出的问题是输出图像的尺寸。我运行了Camera2 API,预览很清晰,但输出非常模糊

        val characteristics: CameraCharacteristics? = cameraManager.getCameraCharacteristics(cameraId)
        val size = characteristics?.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)?.getOutputSizes(ImageFormat.JPEG) // The issue
        val width = imageDimension.width
        val height = imageDimension.height
        if (size != null) {
            width = size[0].width; height = size[0].height
        }
        val imageReader = ImageReader.newInstance(width, height, ImageFormat.JPEG, 5)

下面的代码返回一个大约245*144的尺寸,对于发送到图像阅读器来说太小了。一些输出如何拉伸图像,使它变得模糊。因此,我删除了下面这条线。

val size = characteristics?.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP)?.getOutputSizes(ImageFormat.JPEG) // this was returning a small

手动设置宽度和高度解决了该问题。

 类似资料:
  • 有人知道模拟器相机启动时是否有可能打开一些个人照片吗? 我有一个基于图像分析的应用程序,我想当我点击相机的按钮时,相机打开的不是默认的Android emulator运动图像。我希望它打开一些我设置为默认图像的图像。因此,当我选择拍照时,它将只显示该图像,当我拍照时,该图像将保存到gallery,而不是Android默认图像。

  • 我有一个问题与我的代码,我必须上传图像到Firebase存储,我需要的图像来自画廊和相机,从画廊的图像是好的,但来自相机的图像给问题,图像加载在ImageView和被发送到数据库是黑色的。有人知道如何解决这个问题吗,或者你知道任何其他加载图像的方法吗? 来自画廊 从相机

  • 在相机意图返回时获得文件路径的最佳方法是什么。当然,我可以在启动意图之前将文件路径保存到成员变量,但这似乎不好,我应该从OnActivityResult中获得路径。 我已经试过了(从相机意图获取图像路径): 唯一不同的是,我在尝试内部存储pic时使用了INTERNAL_CONTENT_URI。如果我这样做,我会得到一个异常:

  • 我在为三星S21设计的应用程序中使用了Camera2 Api。这款手机有3个后置摄像头和一个前置摄像头。我试图选择使用的物理摄像机,但是函数getPhysicalCameraIds()总是返回一个空数组。是否有其他方法获取PhysicalCameraIds或指定要使用的摄像机??有人能解释一下吗?

  • 我的第一个问题!我有一段代码有问题,它用额外的输出选项开始相机意图,然后在活动结果上试图调整图像的大小。正在发生的情况是,在回调时的resize函数中会引发一个nullpointer异常。 活动结果回调函数: 下面是logcat:

  • 我试图创建一个用于研究的简单相机应用程序。我阅读了Android摄像头的官方文档,然后开始编码。所以我采取了一些措施 1.在应用程序中添加了相机功能所需的权限。 2.仅将我的活动锁定为纵向模式。 setRequestedOrientation(ActivityInfo.SCREEN\u ORIENTATION\u PORTRAIT); 3、添加了几个摄像头回调以使我的摄像头正常工作。 表面层。回调