我正在尝试使用 ARtoolkit,但使用的是静态图像而不是视频流。我需要能够加载图像、识别标记并定位它们。我正在使用 SDL 加载图像。我能够从加载的图像中获取每个像素的 RGB 值,但我不确定如何格式化数据以供 ARToolkit 使用。
ARToolkit 将其图像存储为 ARUint8*(无符号字符*)类型。我对这种格式的工作方式感到困惑。现在我在主循环中有这段代码,它在程序执行时连续运行。此代码(应该)打印出帧中每个像素的 RGB 值。
ARUint8* dataPtr;
dataPtr = arVideoGetImage(); // Get a new frame from the webcam
int width, height;
if (arVideoInqSize(&width, &height) == 0) // if width and height could be obtained
{
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
printf("pixel %i, %i: %i, %i, %i\n", x, y, dataPtr[(y * 320) + x], dataPtr[(y * 320) + x + 1], dataPtr[(y * 320) + x + 2]);
}
}
}
典型输出:
pixel 5, 100: 0, 0, 0
pixel 6, 100: 178, 3, 0
pixel 7, 100: 0, 0, 177
etc...
它似乎可以正确访问 RGB 值,但我不确定如何将图像数据(从 SDL 格式)复制到这种新格式中。