使用cv :: waitKey而不必首先调用cv :: namedWindow或cv :: imshow
我正在使用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");
即评论,程序崩溃与访问冲突错误。
用cv::namedWindow("test");
即未注释,该程序显示完美,但有一个窗口(命名测试),我不想或不需要。 任何人?
cv::waitKey()
只适用于OpenCV窗口,这不是你现在使用的。
我建议你研究QT替代方案,最有可能的是qSleep()
,它由QTest模块提供:
QTest::qSleep(40);
我找到了一个使用msleep()
的解决方案。 它很容易使用,因为它是QThread
类的成员。
只是以为我会更新这个以防万一有类似问题的人发现这个线程。
链接地址: http://www.djcxy.com/p/95059.html上一篇: Using cv::waitKey without having to call cv::namedWindow or cv::imshow first
下一篇: c++