【问题标题】:OpenCV cv::imshow() does not work but cvShowImage() doesOpenCV cv::imshow() 不起作用,但 cvShowImage() 可以
【发布时间】: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() 时,它工作得很好。感谢您的建议。

标签: c++ opencv


【解决方案1】:
using namespace std;
using namespace cv;

有了这份简历,它对我有用。

【讨论】:

    猜你喜欢
    • 2013-11-03
    • 2021-04-18
    • 2015-09-18
    • 2015-02-23
    • 2021-03-24
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多