使用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++
