读取 PSEye 相机帧

Reading a PSEye Camera frame

本文关键字:相机 PSEye 读取      更新时间:2023-10-16

我正在使用CL Eye Multicam C++ API从PSEye相机获取帧,我发现了一些有趣的东西,我希望有人可以向我解释这种行为。

如果我使用常规代码(大约第 108 行),则遵循此示例:

while(_running)
{
    cvGetImageRawData(pCapImage, &pCapBuffer);
    CLEyeCameraGetFrame(_cam, pCapBuffer);
    cvShowImage(_windowName, pCapImage);
}

pCapBuffer已更新,但是如果我只是这样做:

while(_running)
{    
    CLEyeCameraGetFrame(_cam, pCapBuffer);     
}

pCapBuffer雷迈斯NULL!因此,对于我所看到的CLEyeCameraGetFrame()只是在有人"消费"它时更新pCapBuffer......我不明白的是CLEyeCameraGetFrame()怎么知道缓冲区被读取了?我期待每次打电话时都会更新pCapBuffer CLEyeCameraGetFrame()....这是相机帧读取中的常规行为吗?

另外,如果有人可以指出我如何从这个pCapBuffer中做出QImage,那将非常有帮助!

我终于明白发生了什么......cvGetImageRawData()将图像pCapImage原始数据复制到pCapBuffer,从而为其提供一个地址,使其指向图像类内部数据表示形式。所以每次调用CLEyeCameraGetFrame()时,它都会更改pCapBuffer内部的数据,这与pCapImage内部的数据相同。此代码的设计者只是使用 OpenCV 函数初始化具有适当空间量的缓冲区,并使用它来获取帧图像。