c++ - 为什么 imread() 总是返回空数据?

标签 c++ c visual-studio opencv

这是我的代码:

    #include<opencv\cv.h>
    #include<opencv\highgui.h>
    using namespace cv;
    using namespace std;

    int main()
         {
          Mat src;
          //src.create(200,500,CV_8UC3);
          src = imread( "a.bmp", 1 );
          namedWindow( "Display window", WINDOW_AUTOSIZE );
          if(!src.data)                              
                 cout<<"Could not open or find the image" << std::endl ;
          else
                imshow( "Display window", src);
          waitKey(0);
          return 0;
         }

它总是执行if部分
当我使用 src.create 而不是 imread() 时,它显示一个空图像。

最佳答案

要调试您的问题,您应该尝试确认图像路径是否正确。

按照评论中的建议,尝试指定文件的完整绝对路径。如果您在 Windows 上,请记住使用转义斜杠(例如 c:\a.bmp 需要为“c:\a.bmp”)

如果您从 Visual Studio 执行应用程序,那么您也可以将工作目录配置为位图的目录! ( OpenCV cvLoadImage() does not load images in visual studio debugger? )

您也可以尝试使用 cvLoadImage而不是imread。如果 cvLoadImage 可以打开该文件,那么您可能混合使用了发布和调试库,从而导致出现问题:

关于c++ - 为什么 imread() 总是返回空数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25965358/

相关文章:

c++ - C++获取一个字符串的所有后缀

c++ - 编译器如何实现 constexpr 函数?

c++ - 为什么 Herb Sutter 的监视器示例采用 'T' 而不是 'T&' 或 'T&&' ?

c++ - 链接基于 Dcmtk 的 C++ 程序的库?

visual-studio - 在 64 位模式下运行时缺少 Visual Studio 功能

C++ 使用指针修改 vector

c - 单独声明和初始化的变量如何在内存中工作?

c - 头文件如何知道函数原型(prototype)的实现在哪里?

c - 如何解析 “invalid conversion from ' const char *' to ' LPSTR {aka char* }' [-fpermissive] "

c# - Visual Studio 中 C# 的使用提示