Как создать параметр byte[] yuv для YuvImage из предварительного просмотра моей камеры?

У меня работает предварительный просмотр камеры, и я хочу извлечь значение Y из определенных координат предварительного просмотра моей камеры, чтобы определить яркость.

Однако я не знаю, как создать параметр byte[] yuv для передачи значений. Из документации по API ( http://developer.android.com/reference/android/graphics/YuvImage.html ), он говорит мне, что это данные yuv. Итак, как мне получить этот массив байтов из моего предварительного просмотра камеры, чтобы создать свой YuvImage?

Или я совсем неправильно решаю эту задачу?

Заранее спасибо.


person user2957243    schedule 12.12.2013    source источник


Ответы (1)


Обычно байт данных[], поступающий от onPreviewFrame() имеет данные яркости, упакованные в массив ширина*высота.

Чтобы извлечь яркость (x, y), вы можете использовать следующий фрагмент:

void onPreviewFrame(byte[] data, android.hardware.Camera camera) {
    byte result = data[x + y*width];
}

Вам не нужен YuvImage для этого.

person Alex Cohn    schedule 14.12.2013
comment
Большое спасибо, я ценю это. Я настроил onPreviewFrame для вызова с помощью cameraobject.setPreviewCallback(this) Теперь можно ли просто ссылаться на результат для определения яркости? Кроме того, почему именно x+y*width в массиве данных? Это новая концепция для меня, извините за путаницу! - person user2957243; 17.12.2013