【问题标题】:Opencv imread does not work with relative pathOpencv imread 不适用于相对路径
【发布时间】:2015-05-14 23:08:52
【问题描述】:

正如标题所说。我尝试使用 argv 和绝对路径加载图像并且它有效,但使用相对路径却没有。该图像位于可执行文件的同一目录中。我在 Windows 7 64 位上使用 Visual Studio 2013 和 opencv 2.4.10。我该如何解决?

编辑

这是我的代码:

include <iostream>
#include <fstream>
#include "opencv2\highgui\highgui.hpp"
#include "opencv2\stitching\stitcher.hpp"
#include "opencv2\core\core.hpp"


using namespace cv;
using namespace std;


void main()
{
    vector< Mat > vImg;
    Mat rImg;

    vImg.push_back(imread("1.png"));
    vImg.push_back(imread("2.png"));
    vImg.push_back(imread("3.png"));


    Stitcher stitcher = Stitcher::createDefault(true);


    unsigned long AAtime = 0, BBtime = 0; //check processing time  
    AAtime = getTickCount(); //check processing time  

    stitcher.stitch(vImg, rImg);

    BBtime = getTickCount(); //check processing time   
    printf("%.2lf sec \n", (BBtime - AAtime)
    getTickFrequency());         //check processing time  

    namedWindow("Stitching Result");
    imshow("Stitching Result", rImg);

    waitKey(0);

}

我也试过用“./”“/”“//”“\”和“\”,但还是不行!

【问题讨论】:

  • 请提供一些代码
  • 请提供示例代码和您正在谈论的目录的内容。
  • 我已经用代码编辑了帖子!
  • 如果你真的想这样做的话,我认为你的图像应该与 sln 位于同一个文件夹中:)
  • 我复制了 sln 文件夹中的图像,但仍然无法正常工作:/

标签: c++ opencv imread


【解决方案1】:

正如CTZStef所说,图片一定不能在sln文件夹中,而是在VC++项目文件所在的文件夹中!

【讨论】:

    【解决方案2】:

    我可以为您提供以下方法来解决您的问题:

    1. 在您的 IDE 中更改运行或调试应用程序时执行应用程序的工作目录。将其更改为数据目录的根目录。
    2. 启动命令提示符并cd 到数据目录的根目录。然后使用绝对路径启动您的应用程序。
    3. 添加一个编译定义来存储你的数据目录的绝对路径(在你的编译器标志中添加类似/DDATA_DIR=C:\where\your\data\is的东西,并在你的代码中使用vImg.push_back(imread("DATA_DIR/1.png"));

    一般来说,如果可能,我会将您的源代码与您的数据分开,而不是将其复制到您的解决方案文件的文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 2011-07-12
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-28
      相关资源
      最近更新 更多