0

最近、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()

ご協力ありがとうございました!

4

1 に答える 1