Opencv imread 不适用于相对路径

Opencv imread does not work with relative path

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

}

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

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

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

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

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