【问题标题】:openCV imshow not rendering image on screenopenCV imshow不在屏幕上渲染图像
【发布时间】:2013-12-31 22:08:21
【问题描述】:

我是openCV的新手,最近获得了openCV 2.4.7的预编译版本,并成功将其与visual studio 2010集成。

显然库似乎工作正常,但是当我尝试使用 imshow 显示图像时,它会显示窗口但不会在其中显示图像。

{
    cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);

    if(image.empty())
    {
        cout<<"image not loaded";
    }
    else
    {
        cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
        cv::imshow("test",image);
    }   
}

任何帮助将不胜感激。

【问题讨论】:

  • 你在imshow之后有电话给waitKey吗?
  • 我会在问题中包含图片,但由于我最近在这里注册了自己,所以我还不能包含图片
  • 是试过waitKey还是没有成功

标签: c++ visual-studio-2010 opencv


【解决方案1】:

对于 Python 用户,使用cv2.wait(0) 是解决方案。所以,整体格式是这样的

    cv2.imwrite("DetectionResults.jpg", frame)
    cv2.imshow("DetectionResults", frame)
    cv2.waitKey(0)

【讨论】:

    【解决方案2】:

    我建议删除cv::namedWindow 语句,并添加

    cv::waitKey();
    

    cv:imshow 语句之后。您还可以检查窗口的尺寸是否正确。

    【讨论】:

    • 从上面的回答看来,问题似乎出在图片格式上。
    【解决方案3】:

    你必须有:

    cv::waitKey(0);
    

    代替:

    system("pause");
    

    后者只是行不通。 OpenCV 需要泵送消息以显示和更新窗口,而在 waitKey 函数内部就是这样做的所有机制。

    正如文档所述,waitKey 仅在您打开 HighGUI 窗口时才有效,因此在您的代码中,您可能需要这样做:

    cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_UNCHANGED);
    
    if(image.empty())
    {
        cout<<"image not loaded";
    }
    else
    {
        cv::namedWindow( "test", CV_WINDOW_AUTOSIZE );
        cv::imshow("test",image);
        cv::waitKey(0);
    }   
    

    如果图片格式有问题,你可以试试这样加载:

    cv::Mat image = cv::imread("F:/office_Renzym/test3.jpg",CV_LOAD_IMAGE_COLOR);
    

    【讨论】:

      猜你喜欢
      • 2014-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 2015-12-14
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      相关资源
      最近更新 更多