【发布时间】:2018-08-28 20:54:53
【问题描述】:
产品:Bebop 产品版本:软件版本v2.0.29 SDK版本:ARSDK3_version_3_14_0 使用 libARController:是 SDK平台:UNIX 可通过官方应用重现:否
我一直在尝试使用 Ubuntu 18.04 将 ARCONTROLLER_Frame_t 从 ARSDK 3 转换为 OpenCV 图像,最初,提供的示例程序使用 MPlayer 打开一个 FIFO,该程序写入从无人机接收到的所有帧,我设法在运行时使用 ffmpeg 从所述流中获取图像。我还尝试将 OpenCV 所述文件用作 VideoCapture 的源,该文件有效但被严重延迟。我目前正在尝试逐帧提供 OpenCV。
This is a screenshot 的 ARCONTROLLER_Frame_t 的定义,文档对一切如何工作非常模糊。
我目前得到以下图像: Screen shot of the image obtained
我之前用它来尝试解码它,假设它是 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);
有人知道从中获取实际图像的方法吗?
【问题讨论】:
标签: c++ opencv streaming mp4 ar.drone