visual-c++ - OpenCV图像显示失败

标签 visual-c++ image-processing opencv

我正在尝试将 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 );
}

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

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

最佳答案

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

来自 waitKey 的 OpenCV 文档:

This function is the only method in HighGUI that can fetch and handle events, so it needs to be called periodically for normal event processing unless HighGUI is used within an environment that takes care of event processing.

如果没有此函数,Windows 将无法处理 PAINT 事件并重绘您的窗口。

关于visual-c++ - OpenCV图像显示失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7264185/

相关文章:

visual-c++ - LLVM 调试元数据中的 "retainedNodes"是什么?

c++ - 没有 GetFilePointer(Ex) Windows API 函数吗?

c++ - 使用VS2015 Express,删除VS2013 Community,无法运行 "MSVCP120d.dll missing"

Python - 提取和保存视频帧

python - 无法分配ndarray

visual-c++ - wxWidgets wxWinCE 挂起-恢复崩溃(VC++)

iphone - 如何有选择地仅替换图像中的肤色?

c++ - 是否可以在 .metal 文件中包含标准 C++ 库?

c# - 查找颜色的像素坐标

opencv - cvQueryFrame 产生 msvcrt 访问错误