我最近买了一台 GigE 相机,它与它的 SDK 捆绑在一起。其中一个示例解释了如何通过回调函数从相机中抓取帧。它的工作方式如下:
void OnImageGrabbed(Image* pImage, const void* pCallbackData)
{
printf( "Grabbed image %d\n", imageCnt++ );
return;
}
//...
int main(int argc, char** argv)
{
camera.StartCapture(OnImageGrabbed);
}
以上基于一个简单的 cpp 程序(不涉及对象)。
现在我正在尝试将功能合并到我的面向对象应用程序中(用 openFrameworks 编写)。对于如何做到这一点,我真的很模糊,而且我无法在互联网上找到足够接近的例子。
基本上我在我的header
文件中做了什么:
class ofApp : public ofBaseApp{
public:
void setup();
void update();
void draw();
friend void OnImageGrabbed(Image* pImage, const void* pCallbackData);
bool bNewFrameArrived;
};
然后在我的implementation
(.cpp)文件中
void ofApp::setup()
{
bNewFrame = false ;
cam.StartCapture(OnImageGrabbed);
}
void OnImageGrabbed(Image* pImage, const void* pCallbackData)
{
bNewFrame = false ;
cout<< "Grabbed image" << endl;
bNewFrame = true ;
}
void ofApp::update(){
//somehow grab the pImage. but how???
if ( bNewFrame )
//do stuff
}
把它作为朋友类很好,但我怎样才能访问ofApp
类的实例化(即 bNewFrame 变量)?另外,我以后如何pImage
从我的update()
成员函数访问?
谢谢您的帮助!