Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 10(api 29)如何启用HDR和Nigh模式_Android_Android Camera - Fatal编程技术网

Android 10(api 29)如何启用HDR和Nigh模式

Android 10(api 29)如何启用HDR和Nigh模式,android,android-camera,Android,Android Camera,我正在制作一款专门用于Pixel 3 XL的相机。我正在使用camera2 API,希望使用启用HDR和/或夜间模式的前置摄像头拍照。这是我设置捕获请求时截取的代码: final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE); captureBuilder.addTarget(mStillImageReader.ge

我正在制作一款专门用于Pixel 3 XL的相机。我正在使用camera2 API,希望使用启用HDR和/或夜间模式的前置摄像头拍照。这是我设置捕获请求时截取的代码:

 final CaptureRequest.Builder captureBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
 captureBuilder.addTarget(mStillImageReader.getSurface());
 captureBuilder.set(CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTROL_SCENE_MODE_HDR);
 captureBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_AUTO);
 captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CameraMetadata.CONTROL_AE_MODE_ON);
 captureBuilder.set(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_AUTO);
 captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_SCENE_MODE_NIGHT);
 captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, 0);

...
 mCaptureSession.capture(captureBuilder.build(), CaptureCallback, mBackgroundHandler);

我希望Android的本机摄像头应用程序在设置为夜间模式或HDR+拍摄时,能达到与之相近的效果。有人知道我是否需要做的不仅仅是在捕获请求中设置标志来获得所需的行为吗?

HDR+/HDR在谷歌自己的像素手机上似乎不受支持,即使使用CameraX(当然也不支持Camera2)

Myabe值得尝试带有第三方扩展的CameraX,如


问题是,CameraX目前处于(非常)阿尔法状态,其命运也不清楚。

在Android中,图像处理算法可以在HAL级别和应用程序级别实现。Android框架位于HAL和应用程序之间,提供了一个与摄像头交互的界面。调用
set
方法时:

captureBuilder.set(
CaptureRequest.CONTROL_场景_模式,
摄像机数据控制(场景、模式、HDR);
在将映像返回应用程序之前,请求HAL执行HDR。注意:HAL是由OEM(或供应商)实现的(可以考虑像素为OEM),而实现者则是实现不同的<代码>控件SeNeYOLL模式< /代码>。您可以并且应该使用以下方式查询可用的控制模式:

// Get the camera charecteristics for current camera
CameraCharacteristics cameraCharacteristics = getCameraCharecteristics(cameraFacing);

int[] modes = cameraCharacteristics.get(
                CameraCharacteristics.CONTROL_AVAILABLE_SCENE_MODES);

// Check if the modes array has the SCENE MODE you wish to apply
// ... by iterating through the list.
如果在Pixel 3 XL上运行此功能,可能无法获得HDR支持。如果我错了,请纠正我

如果您不希望为HDR和夜间模式编写自己的算法,则必须依赖可用的场景模式,最好是查询和验证。或者,您可以从camera 2请求
YUV
RAW
图像,并在应用程序级别通过HDR或夜间模式算法运行它们

TL;博士
Google Pixel的本机摄像头很可能在camera2返回的图像上进行更多的图像处理,因此无法通过设置任何配置来单独利用camera2进行复制。

我确实认为某些功能(特别是夜间模式)是Google camera应用程序独有的。它们依赖于自定义算法,而不是物理相机组件的功能(如控制焦距、白平衡或ISO-
场景\模式\夜间
)。HDR模式可能由硬件支持——这是一种在较低抽象层上实现的通用算法,可获得最佳性能。请注意,硬件制造商将其设备宣传为HDR+等,因此他们也在实施一些增强的HDR模式。通常,访问定制的每设备功能时会出现问题,您在做什么-
CaptureRequest.CONTROL\u MODE,CameraMetadata.CONTROL\u SCENE\u MODE\u NIGHT)?您不能对
控制模式
使用
控制场景模式
,天哪<代码>即使使用CameraX(当然不是Camera2)
-CameraX使用Camera2API,它只是它的一个包装器