【发布时间】:2014-06-06 22:13:24
【问题描述】:
我遇到了以前在使用 OpenCV 时从未遇到过的问题。当我使用 cv::imshow() 时,图像完美显示,但是顶部栏有奇怪的 ascii 字符而不是窗口名称,每隔几秒钟就会出现一个具有不同名称的新窗口,并且旧窗口冻结在它的任何框架上目前正在播放。我可以退出被冻结的窗口,但更多的窗口会立即以不同的名称出现。我以前使用过 OpenCV,而 imshow() 一直对我有用。 这是我的代码:
#include "stdafx.h"
#include "opencv2/opencv.hpp"
using namespace cv;
int main()
{
VideoCapture cap(0);
Mat frame;
namedWindow("Sample Program", CV_WINDOW_AUTOSIZE);
while (true)
{
cap >> frame;
imshow("Sample Program", frame);
if(waitKey(30) >= 0) break;
}
return 0;
}
如果我将 imshow() 替换为
cvShowImage("Sample Program", cvCloneImage(&(IplImage)frame));
完美运行。 我只想知道是否存在库问题或导致此问题的原因 我在 Visual Studio Ultimate 2012 中使用 OpenCV 2.4.9
【问题讨论】:
-
刚刚在 cv 2.4.8 上运行您的代码,它可以正常工作!
-
这个问题的一个常见原因是在发布模式下链接到调试库,反之亦然。确保不是这种情况。
-
使用字符串文字作为标题。例如
string title = "Sample Program";然后用这个变量调用。 -
根据我在别处读到的内容,我很确定 Aurelius 是对的,但我还没有找到解决方法
-
我在使用 imshow() 时也无法显示窗口。当替换 iby cvShowImage() 时,它工作得很好。感谢您的建议。