все пиксели выходного изображения 0x008700 - PullRequest
0 голосов
/ 09 мая 2019

Я написал приложение, которое захватывает изображения с помощью камеры camera2. Обычно все работает, но иногда все пиксели захваченного изображения имеют значение 0x008700. Ни один из обратных вызовов onCaptureFailed (), onCaptureBufferLost (), onCaptureSequenceAborted () или onError () не вызывается. Просто зеленый буфер.

В качестве обходного пути я проверяю полученное растровое изображение и, если первые 10 пикселей имеют размер 0x008700, я прошу пользователя повторно захватить изображение. Обычно это работает. Я показал код строителя запроса ниже.

Любые подсказки будут с благодарностью!

requestBuilder = camera2Device.createCaptureRequest(CameraDevice.TEMPLATE_MANUAL);
checkHardwareSupport(characteristics); //throws if NG
float          availableApertures[]    = getAvailableApertures(characteristics);
float          availableFocalLengths[] = getAvailableAttributeValues(characteristics,
                                                                                                                                         CameraCharacteristics.LENS_INFO_AVAILABLE_FOCAL_LENGTHS);
Range<Long>    availableShutterTimes   = getAvailableShutterSpeedRange(characteristics);
Range<Integer> availableIsoRange       = getAvailableISORange(characteristics);

exposureSettings = computeExposureSetting(exposureSettings, //gets populated and  returned.
                                                                                    availableApertures,
                                                                                    availableShutterTimes,
                                                                                    availableIsoRange);
requestBuilder.set(CaptureRequest.CONTROL_CAPTURE_INTENT, CONTROL_CAPTURE_INTENT_STILL_CAPTURE);//CONTROL_CAPTURE_INTENT_MANUAL);manual causes  Error 4 !!!!
requestBuilder.set(CaptureRequest.CONTROL_MODE,CONTROL_MODE_OFF );
requestBuilder.set(CaptureRequest.FLASH_MODE, CaptureRequest.FLASH_MODE_OFF);
requestBuilder.set(CaptureRequest.LENS_FOCAL_LENGTH, availableFocalLengths[0]);
requestBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, (long) (exposureSettings.shutterSpeed * nanosPerSecond));
requestBuilder.set(CaptureRequest.LENS_APERTURE, exposureSettings.fStop);
requestBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, Math.round(exposureSettings.iso));
requestBuilder.set(CaptureRequest.LENS_FOCUS_DISTANCE,0.0f);//infinity
requestBuilder.addTarget(imageCaptureSurface);
imageCaptureRequest = requestBuilder.build();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...