Opencv imread不适用于相对路径

时间:2015-03-12 16:55:58

标签: c++ opencv imread

正如标题所说。我试图用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);

}

我还尝试使用&#34; ./" &#34; /&#34; &#34; //&#34; &#34; \&#34;和&#34; \&#34;,但它仍无效!

2 个答案:

答案 0 :(得分:0)

正如CTZStef所说,图像不能在sln文件夹中,而是在包含VC ++项目文件的文件夹中!

答案 1 :(得分:0)

我可以通过以下方式为您解决问题:

  1. 在IDE中,更改运行或调试应用程序时执行的工作目录。将其更改为数据目录的根目录。
  2. 启动命令提示符并cd到数据目录的根目录。然后使用绝对路径启动应用程序。
  3. 添加一个编译定义,用于存储数据目录的绝对路径(将此类/DDATA_DIR=C:\where\your\data\is添加到编译器标志中,并在代码中使用vImg.push_back(imread("DATA_DIR/1.png"));
  4. 通常,如果可能,我会将您的源代码与您的数据分开,而不是将其复制到解决方案文件的文件夹中。