C OPENCV图像在Boost线程中不显示

c++ opencv image not display inside the boost thread

本文关键字:显示 线程 Boost OPENCV 图像      更新时间:2023-10-16

im开发c++应用程序我使用了boostopencv。并创建Boost线程并调用该线程中的功能。该函数具有OpenCV Imread(我使用cvloadimage检查了检查,但我得到的结果相同),但是PROGRAME无法完成并进行预先出口。

请在我使用的代码下面找到

boost::thread *thread_reconstruct; 
    int main( int argc, const char** argv )
    {
        thread_reconstruct = new boost::thread(  &FuncCreate  );
        return 0;
    }
    void FuncCreate()
    {
        while (true)
        {
          compute_left_descriptors(g_nameRootFolder.c_str());
    }
    }
    void compute_left_descriptors(const char* name_dir)
    {
        char namebuf[1024];

            sprintf(namebuf, "%s/Left/%04d_left.bmp", name_dir, 1);
        // Program ended with exit code: 0 programe exit from here.
        Mat input_left = imread(namebuf, CV_LOAD_IMAGE_COLOR);
        imshow("Right View", input_left);
        waitKey(0);
        printf("donen");
    }

请尝试此版本的代码,并告诉我们它是否有效

boost::thread *thread_reconstruct; 
int main( int argc, const char** argv )
{
    cv::namedWindow("Right View"); // this will create a window. Sometimes new windows can't be created in another thread, so we do it here in the main function.
    thread_reconstruct = new boost::thread(  &FuncCreate  );
    thread_reconstruct->join(); // this will make your program wait here until the thread has finished processing. Otherwise your program would exit directly.
    return 0;
}
void FuncCreate()
{
    while (true)
    {
      compute_left_descriptors(g_nameRootFolder.c_str());
    }
}
void compute_left_descriptors(const char* name_dir)
{
    char namebuf[1024];

        sprintf(namebuf, "%s/Left/%04d_left.bmp", name_dir, 1);
    // Program ended with exit code: 0 programe exit from here.
    Mat input_left = imread(namebuf, CV_LOAD_IMAGE_COLOR);
    if(input_left.empty()) printf("could not load imagen");
    imshow("Right View", input_left);
    waitKey(0); // if you dont want to press a key before each new image, you can change this to waitKey(30);
    printf("donen");
}