我正在使用 Qt 编写一个 GUI 程序并使用 OpenCV 进行一些视频处理。我在主 GUI 线程的标签中显示 OpenCV 进程的结果(在单独的线程中)。
我遇到的问题是 cv::waitKey 不起作用,除非我打开使用 cv::namedWindow 或 cv::imshow 打开的本机 OpenCV 窗口。有谁知道如何解决这个问题?
简短的例子:
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");
ie 注释,程序因访问冲突错误而崩溃。
没有注释,程序显示完美,但有cv::namedWindow("test");
一个窗口(名为测试)我不想要或不需要。有人吗?