最近、SDK にバンドルされている GigE カメラを購入しました。例の 1 つは、コールバック関数を介してカメラからフレームを取得する方法を説明しています。次のように動作します。
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()
ご協力ありがとうございました!