我正在使用Qt编写GUI程序,同时使用OpenCV进行视频处理。我正在在主GUI线程中的标签中显示OpenCV过程的结果(该过程在单独的线程中执行)。
我的问题在于,除非我使用cv::namedWindow或cv::imshow打开本机OpenCV窗口,否则cv::waitKey不起作用。有人知道如何解决这个问题吗?
下面是一个简短的示例:
void Thread::run()
{
//needed variables
cv::VideoCapture capture(0);
cv::Mat image;
//main loop
//cv::namedWindow("test");
forever
{
capture>> image;
if(!image.data)
break;
emit paintToDisplay(convertToQImage(image));
cv::waitKey(40);
}
}
使用//cv::namedWindow("test");
即注释掉该行,程序会崩溃并显示访问冲突错误。
使用cv::namedWindow("test");
即取消注释该行,程序可以完美运行,但会出现一个我不需要的窗口(名为test)。 有没有人可以提供帮助?