Я хотел бы узнать больше об Camera2 API.Итак, я скачал официальный образец Camera2 отсюда https://github.com/googlesamples/android-Camera2Basic и немного поиграл с ним, пока не понял, как он работает.Итак, теперь я спросил себя, могу ли я обрабатывать кадры в режиме реального времени, что было бы крутой функцией.Я предполагаю, что это можно сделать с помощью метода onImageAvailable () класса ImageReader .
Поэтому я реализовал следующие строки
private final ImageReader.OnImageAvailableListener mOnImageAvailableListener
= new ImageReader.OnImageAvailableListener() {
@Override
public void onImageAvailable(ImageReader reader) {
Image image = null;
int width, heigth;
int[] pixels;
try {
image = reader.acquireLatestImage();
if (image != null) {
ByteBuffer buffer = image.getPlanes()[0].getBuffer();
byte[] bytes = new byte[buffer.capacity()];
buffer.get(bytes, 0, bytes.length);
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);;
width = bitmap.getWidth();
heigth = bitmap.getHeight();
pixels = new int[width*heigth];
bitmap.getPixels(pixels, 0, width, 0, 0, width, heigth);
FilterLib.floydsteinberg(pixels, width, heigth);
bitmap.setPixels(pixels, 0, width, 0, 0, width, heigth);
image.close();
}
} catch (Exception e) {
Log.w("ImageReader", e.getMessage());
}
mBackgroundHandler.post(new ImageSaver(reader.acquireNextImage(), mFile));
}
};
Итак, я сделал, чтобы извлечь растровое изображение из изображения.Полученное растровое изображение затем передается методу floydsteinberg (), который является нативной реализацией алгоритма Флойда-Стейнберга.Нативная реализация делает так, чтобы получать пиксели, обрабатывать их на основе упомянутого алгоритма и возвращать обработанные пиксели обратно, которые, в свою очередь, теперь будут новыми пикселями растрового изображения.
Но теперь: как я могу увидетьчто нового (обработанного) растрового изображения на экране?Точнее говоря, есть ли способ преобразовать это растровое изображение в изображение?
Я нашел несколько потоков SO, таких как camera2, выводимых в Bitmap или Android Camera2 API, показывающих обработанное предварительное изображение , но я не мог понять из этого слишком много.