c++ - openCV imshow不在屏幕上渲染图像

标签 c++ visual-studio-2010 opencv

我是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);
    }   
}

任何帮助将不胜感激。

最佳答案

你必须有:

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);

关于c++ - openCV imshow不在屏幕上渲染图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20561430/

相关文章:

c++ - 更好地理解 C++ 中的 3D 到 1D 数组转换

c++ - Visual C++ 数组文字

c++ - "<</>>"C++运算符

visual-studio-2010 - Visual Studio 2010 Ultimate 中的 Pex 和 F#

opencv - 使用 CUDA 在 Visual Studio 2012 中构建 OpenCV

python - Tensorflow.image.decode_jpeg 在解码图像 TFRecord 数据时移动值

android - 使用适用于 Android 的 openCV 时无法找到正确的 FAST-SURF 匹配项

c++ - Visual Studio 发布中令人费解的 STL 错误

c# - 使用 native C++、托管 C++ cli 和 C# 解决方案在混合模式下进行调试

c# - linq看不到实际的sql查询