Как я могу сделать снимок, используя ARCore Camera с объектами?
Я создаю приложение, используя ARCore для отображения некоторых изображений на пустой поверхности. Я хочу захватить изображение той поверхности, где отображается объект. Я положил кнопку захвата на экране камеры AR.
Возможно ли захватить этот вид объектами в камере ARCore?
2 ответа
Если вам просто нужен скриншот вида ARCore, вы можете попробовать использовать некоторые функции Android, такие как PixelCopy.request(view, bitmap, (copyResult)->{})
на вид фрагмента ARCore.
Источник: https://codelabs.developers.google.com/codelabs/sceneform-intro/index.html?index=..%2F..io2018
Вы можете захватить текущий ARFrame, используя следующий публичный метод:
public Image acquireCameraImage()
Этот метод позволяет вам получить изображение с камеры, которое соответствует текущему кадру и возвращает Android image object
который содержит данные изображения с камеры. Формат возвращаемого изображения - AIMAGE_FORMAT_YUV_420_888.
Для вида, содержащего трехмерные объекты Sceneform, используйте getScreenShot()
метод:
public static Bitmap getScreenShot(View view) {
View screenView = view.getRootView();
screenView.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());
screenView.setDrawingCacheEnabled(false);
return bitmap;
}
... или используйте это:
fun onCameraClick(buffer: ByteBuffer, width : Int, height: Int): Bitmap {
buffer.rewind()
val bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888)
bitmap.copyPixelsFromBuffer(buffer)
return bitmap
}