阅读PSEye相机框架

时间:2013-12-31 04:44:29

标签: c++ camera

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

如果我使用常规代码(第108行),请关注this example

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

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

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

pCapBuffer remais NULL!因此,对于我看到CLEyeCameraGetFrame()当有人“消费”它时更新pCapBuffer ...我不知道的是CLEyeCameraGetFrame()如何知道缓冲区被读取了?我希望每次调用pCapBuffer时都会更新CLEyeCameraGetFrame() ....这是相机帧中的常规行为吗?

此外,如果有人可以指出我如何从QImage pCapBuffer中取出{{1}},那将非常有帮助!

1 个答案:

答案 0 :(得分:0)

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