【问题标题】:OpenCV Image Display FailureOpenCV 图像显示失败
【发布时间】:2011-09-01 17:40:28
【问题描述】:

我正在尝试将 OpenCV(2.3.1 版)包含在我正在处理的项目中。相机正在向我的程序(在 Windows 7 64 位机器上的 Microsoft Visual C++ 2008 中)发送一个图像流,该程序将其存储在一个无符号的 8 位整数缓冲区中。我想使用 OpenCV 在窗口中显示这个流。现在,我似乎无法在我的 OpenCV 窗口中显示任何图像,所以我还没有使用我的图像流;只是一个 JPEG 文件。

首先我声明我的窗口:

namedWindow( "Window", CV_WINDOW_AUTOSIZE );

然后我尝试填充它:

char* imgName = "C:\...\Jellyfish.jpg";
Mat imgMat = imread(imgName, 1);
if(imgMat.data)
{
     imshow( "Window", imgMat );
}

当我的程序到达声明窗口的位置时,会出现一个灰色的小窗口。当它到达应该显示图像的位置时,窗口的尺寸会更改为图像的尺寸(我已经用不同的图像对此进行了测试),但窗口的内部仍然是一个纯灰色的框。

是什么导致了这个奇怪的错误?程序显然找到了图像,否则它无法正确更改其尺寸。

【问题讨论】:

    标签: visual-c++ image-processing opencv


    【解决方案1】:

    您需要在imshow之后添加waitKey(2)函数调用。

    来自等待键的 OpenCV 文档:

    该函数是HighGUI中唯一可以获取和处理的方法 事件,因此需要定期调用它以进行正常事件 处理,除非在一个环境中使用 HighGUI 关心事件处理。

    如果没有这个功能,Windows 将无法处理 PAINT 事件并重绘您的窗口。

    【讨论】:

    • 谢谢,我添加了该功能,图像现在显示在窗口中。我需要阅读它的文档,我担心它会影响我的视频流的速度,但它并没有产生明显的影响。
    猜你喜欢
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多