我正在开发c++
我在那里使用的应用程序boost
, opencv
。并创建 boost 线程并调用该线程内的函数。该函数已得到 opencv imread(我使用 cvLoadimage 检查过,但得到了相同的结果),但程序无法完成并且程序退出。
请在下面找到我使用的代码
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("done\n");
}
请尝试这个版本的代码并告诉我们它是否有效
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 image\n");
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("done\n");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)