OpenCV不会加载图片

时间:2019-08-28 03:07:37

标签: c++ image-processing opencv4

所以我链接了OpenCV的所有库,我添加了所有.lib和.dll才能使其正常工作,但是当我尝试尝试显示图片时,它说该图片不存在。所有路径都是正确的,图像在解决方案的主目录中,这里是代码。

Mat color = imread("wall.jpg");

也尝试过:

  • D:\\wall.jpgD:\wall.jpg

  • D:/wall.jpgD://wall.jpg


     #include<opencv2/opencv.hpp>
     #include<opencv2/imgcodecs.hpp>

      using namespace std;

      using namespace cv;
      int main()
      {

    Mat color = imread("wall.jpg");
    if (color.empty())
    {
        cout << "image is empty" << endl;
        system("pause");
        exit(-1);
    }
    else
    {
        cout << "image is displayed" << endl;
        imshow("window", color);
    }



    waitKey();

    }

代码输出

image is empty Press any key to continue . . .

它应该说

image displayed

1 个答案:

答案 0 :(得分:0)

我的回答假设您正在使用Windows,因为您在说明中使用了解决方案一词。

以下至少一项是正确的:

  • 您的路径不正确。如果要从Visual Studio运行代码,则使用"wall.jpg"之类的相对路径将使用工作目录,该目录不一定是解决方案目录。
    • 使用另一种机制来验证路径是否正确,例如在Windows上从命令行运行以下命令:start D:\wall.jpg。如果该命令返回文件未找到错误,则说明您的路径错误。
  • 您正在使用不受支持的文件格式。
    • 确保您可以打开文件并查看它。
    • 确保它是JPEG,TIFF或PNG。扩展名可能不正确。如果不确定,请尝试使用您知道是其中一种类型的文件。
  • 您无权读取文件。
    • 打开文件并确认您可以查看。如果可以,并且您的opencv进程正在以同一用户身份运行,则应该可以。

来自imread docs

  

从文件加载图像。

     

函数imread从指定的文件加载图像并返回它。如果无法读取图像(由于缺少文件,权限不正确,格式不受支持或格式无效),该函数将返回一个空矩阵(Mat::data==NULL

     

...

     

在Microsoft Windows * OS和MacOSX *上,默认使用OpenCV映像附带的编解码器(libjpeg,libpng,libtiff和libjasper)。因此,OpenCV始终可以读取JPEG,PNG和TIFF。

     

...

     

注意

     
      
  • 该功能通过内容而不是文件扩展名确定图像的类型。
  •   

命令行工作目录

如果从命令行运行,则工作目录就是您所在的目录。如果在操作系统上运行文件列表命令,并且可以看到"wall.jpg"映像,那么您的位置正确。从此处使用.\path\to\my\opencv-program.exe之类的相对路径从此处运行OpenCV可执行文件。

Visual Studio调试工作目录

Working Directory in Visual Studio

相关问题