Продукт: бибоп
Версия продукта: версия программного обеспечения v2.0.29
Версия SDK: ARSDK3_version_3_14_0
Использование libARController: Да
Платформа SDK: UNIX
Воспроизводится с официальным приложением: NO
Я пытался преобразовать ARCONTROLLER_Frame_t из ARSDK 3 в изображение OpenCV с использованием Ubuntu 18.04, первоначально предоставленный образец программы использовал MPlayer для открытия FIFO, где программа записывала все кадры, полученные от дрона, Мне удалось получить изображения из указанного потока, используя ffmpeg во время его работы. Я также попытался дать OpenCV указанный файл для использования в качестве источника для VideoCapture, который работал, но ужасно затягивался. В настоящее время я пытаюсь дать OpenCV кадр за кадром.
Это скриншот определения ARCONTROLLER_Frame_t, документация очень расплывчатая о том, как все работает.
В настоящее время я получаю следующее изображение:
Снимок экрана с полученным изображением
Ранее я использовал это, чтобы попытаться декодировать его, предполагая, что оно было в формате RGB, это изображение реагирует на взаимодействие с камерой, поэтому я предполагаю, что это правильные данные:
void rawToMat(Mat &destImage, ARCONTROLLER_Frame_t &sourceImage) {
if (sourceImage.used == 0) {
return;
}
uchar *pointerImage = destImage.ptr(0);
for (int i = 0; i < 480 * 856; i++) {
pointerImage[3 * i] = sourceImage.data[3 * i + 2];
pointerImage[3 * i + 1] = sourceImage.data[3 * i + 1];
pointerImage[3 * i + 2] = sourceImage.data[3 * i];
}
}
Но я обнаружил, что это обеспечивает тот же вывод:
ARCONTROLLER_Frame_t newFrame = getCurrentFrame();
Mat currentImage = Mat(480, 856, CV_8UC3, newFrame.data);
Кто-нибудь знает способ получить реальное изображение из этого?