Я пишу приложение, чтобы получить кадры предварительного просмотра камеры и преобразовать его для побитового отображения в Android. Вот мой код:
Camera.PreviewCallback previewCallback = new Camera.PreviewCallback()
{
public void onPreviewFrame(byte[] data, Camera camera)
{
try
{
BitmapFactory.Options opts = new BitmapFactory.Options();
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);//,opts);
}
catch(Exception e)
{
}
}
};
mCamera = Camera.open();
mCamera.setPreviewCallback(previewCallback);
После того, как я запускаю предварительный просмотр, обратный вызов назвали с данными, но битовый массив является пустым.
Что я делал неправильно, когда преобразовывают массив байтов в BitMap?
Пробовали ли вы декодировать данные кадра предварительного просмотра в RGB перед использованием BitmapFactory? Формат по умолчанию — YUV, и я не уверен, что он совместим с BitmapFactory. Метод декодирования Дейва Манперла можно найти здесь:
Получение кадров из видеоизображения в Android
Сообщите мне, работает ли он.
Ура,
Пол