用于获取图像的回调函数

时间:2017-01-06 17:50:10

标签: c++ opencv c++11 callback mfc

我正在研究使用回调来访问图像。从MFC C ++应用程序调用DLL函数后。我想知道C ++中最好的做法是什么(最好是C ++ 11)。 我的dll声明是:

typedef void (CALLBACK * ImageCallback)(unsigned char *img, int width, int height, int channels);

class __declspec(dllexport) myInterface
{
public:
    myInterface(void);
    ~myInterface(void);
    void initializeInterface(  ImageCallback stitching_callback);
    bool combineImages(const std::vector<cv::Mat> images, cv::Mat &im_res, cv::Mat &im_res2);
private:
        ImageCallback stcallback;

};

函数combineImages需要一段时间来处理,我不能让GUI挂起直到它完成。我想使用回调函数来通知我的GUI C ++应用程序combineImages已返回并获取输出图像。 这是我的Cpp:

void myInterface::initializeInterface(  ImageCallback st_callback)
{
    stcallback =  st_callback;
}

bool myInterface::combineImages(const std::vector<cv::Mat> images, cv::Mat &im_res, cv::Mat &im_res2)
{
    // do some things
    // modify outputs im_res and im_res2, I want to trigger the callback here
    ImageCallback();
}

我的GUI是用MFC编写的,我使用这个dll的部分是:

void AutoDlg::OnBnClickedButton()
{
    cv::Mat im1_orig, outimage1, outimage2;
    // input images in images
    myInterface Test;
    test.initializeInterface();
    Test.combineImages(images, outimage1, outimage2);

}

我不知道该怎么办。任何帮助,将不胜感激。我的问题是,在MFC代码中,我可以获得outimage1outimage2,而不必让函数OnBnClickedButton挂起,直到combineImages返回

0 个答案:

没有答案