Есть ли способ получить доступ к значениям RGB точки, трехмерные координаты которой известны в ARCore? - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь извлечь информацию о цвете RGB, как только узнаю трехмерные координаты облака точек.

Чтобы получить облако точек, я использую функцию: -

PointCloud pointCloud = frame.acquirePointCloud();

Получив облако точек, я перебираю буфер

FloatBuffer points_buffer = pointCloud.getPoints();
  while(points_buffer.hasRemaining())
  {
    float x = points_buffer.get();
    float y = points_buffer.get();
    float z = points_buffer.get();
    float confidence = points_buffer.get();
  }

Я могу извлечь координаты точек, и мне нужно хранить информацию о цвете (значения RGB) в этой точке вдольс этим.

Я пытался сделать это с помощью следующего подхода: -

1) Сохранить изображение в каждом кадре, используя: -

Image m_img = frame.acquireCameraImage();

2)Затем преобразуем трехмерные координаты в экранные координаты, используя: -

Преобразование трехмерного мира (привязка / поза дуги) в соответствующие ему 2D экранные координаты

Для позы яиспользуя координаты x, y, z для перевода и единичный кватернион для вращения.

Затем я планирую поискать значения в растровом изображении.

Однако я сталкиваюсь со следующими проблемами,

1) Захваченное изображение имеет формат YUV_420_888, и мне не удалось преобразовать его в растровое изображение в формате ARGB_888.

2) Описанная выше ссылка для преобразования координат иногда дает отрицательные значения дляX-координата.

Есть ли лучший способ извлечь значения RGB с учетом 3D-координаты в ARCore?

...