相关疑难解决方法(0)

Android Camera2增加亮度

我在我的应用程序中使用android camera2拍摄连续图像,这时我使用camera2获得的图像预览亮度与原始相机相比非常暗.我看到了这个,但答案中没有类似的要求.

我试图设置camera2亮度的建议在这里:

请注意,此控件仅在android.control.aeMode!= OFF时有效.即使android.control.aeLock == true,此控件也会生效.

captureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON);
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_LOCK, true);
            captureRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 6);
Run Code Online (Sandbox Code Playgroud)

但它仍然显示预览为暗图像,如下所示.

看到这里的区别:

原装相机: 在此输入图像描述

使用Camera2: 在此输入图像描述

我需要传递的值是什么,作为第二个参数:

captureRequestBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 6);
Run Code Online (Sandbox Code Playgroud)

我保持6,因为正如doc的建议:

例如,如果曝光值(EV)步长为0.333,则"6"表示+2 EV的曝光补偿; -3意味着-1 EV的曝光补偿.

但亮度仍然没有影响..

android android-camera2

17
推荐指数
2
解决办法
3749
查看次数

Android中Camera和Camera2的区别

我正在构建一个类似于社交媒体的应用程序,人们可以在这里分享Instagram等照片和视频.这就是为什么Camera对我的应用非常重要.现在camera2 API让我很困惑.我想在API级别11+上运行我的应用程序.我知道camera2仅适用于API级别21+因此,我需要为旧版本设计两个API(摄像头),为更高版本设计第二个(摄像头2).问题是我刚刚开始学习Android,我不知道这两个API之间的主要区别是什么.

Camera2 API有哪些主要功能?
或Old Camera API有任何缺点吗?

我的应用程序中需要三件事.

1-简单拍摄照片2-连拍图像(创建GIF图像)3-简单视频拍摄.

哪种Camera API对我有好处?

android android-camera android-camera2

15
推荐指数
1
解决办法
9572
查看次数

camera2 api将yuv420转换为rgb green out

我尝试将图像从YUV_420_888转换为rgb,我对输出图像有些麻烦.在ImageReader中,我以YUV_420_888格式获取图像(使用相机2 api获取此图像预览).

imageReader = ImageReader.newInstance(1920,1080,ImageFormat.YUV_420_888,10);
Run Code Online (Sandbox Code Playgroud)

在android sdk中为YuvImage类编写,即YuvImage仅使用NV21,YUY2.

因为我们可以看到N21和yuv420之间的差异不大,我尝试将数据转换为N21

YUV420: 在此输入图像描述

N21: 在此输入图像描述

onImageAvailable中我单独获得每个Planes并将它们放在正确的位置(如图像所示)

ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

ByteBuffer bufferY = image.getPlanes()[0].getBuffer();
byte[] data0 = new byte[bufferY.remaining()];
bufferY.get(data0);

ByteBuffer bufferU = image.getPlanes()[1].getBuffer();
byte[] data1 = new byte[bufferU.remaining()];
bufferU.get(data1);

ByteBuffer bufferV = image.getPlanes()[2].getBuffer();
byte[] data2 = new byte[bufferV.remaining()];
bufferV.get(data2);
...
outputStream.write(data0);
for (int i=0;i<bufferV.remaining();i++) {
    outputStream.write(data1[i]);
    outputStream.write(data2[i]);
}
Run Code Online (Sandbox Code Playgroud)

创建YuvImage后,转换为Bitmap,查看并保存

final YuvImage yuvImage = new YuvImage(outputStream.toByteArray(), ImageFormat.NV21, 1920,1080, null);
ByteArrayOutputStream outBitmap = new ByteArrayOutputStream();

yuvImage.compressToJpeg(new Rect(0, 0,1920, 1080), 95, outBitmap);

byte[] …
Run Code Online (Sandbox Code Playgroud)

android image yuv android-camera

8
推荐指数
1
解决办法
8233
查看次数

标签 统计

android ×3

android-camera ×2

android-camera2 ×2

image ×1

yuv ×1