C++ Opencv imread不适用于相对路径

C++ Opencv imread不适用于相对路径,c++,opencv,imread,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.h

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

}
包括
#包括
#包括“opencv2\highgui\highgui.hpp”
#包括“opencv2\stitching\stitcher.hpp”
#包括“opencv2\core\core.hpp”
使用名称空间cv;
使用名称空间std;
void main()
{
向量vImg;
马口铁;
vImg.push_back(imread(“1.png”);
vImg.push_back(imread(“2.png”);
vImg.push_back(imread(“3.png”);
Stitcher-Stitcher=Stitcher::createDefault(true);
无符号长AAtime=0,BBtime=0;//检查处理时间
AAtime=getTickCount();//检查处理时间
缝合器。缝合(vImg、rImg);
BBtime=getTickCount();//检查处理时间
printf(“%.2lf秒\n”,(BBtime-AAtime)
getTickFrequency());//检查处理时间
namedWindow(“缝合结果”);
imshow(“缝合结果”,rImg);
等待键(0);
}

我也试着使用“/”/“/”/“\”和“\”,但仍然不起作用

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

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

  • 在IDE中,更改运行或调试应用程序时执行应用程序的工作目录。将其更改为数据目录的根目录
  • 启动命令提示符并将
    cd
    插入数据目录的根目录。然后使用应用程序的绝对路径启动应用程序
  • 添加一个编译定义,该定义存储数据目录的绝对路径(将类似以下内容添加到编译器标志中,并在代码中使用
    vImg.push_back(imread(“data_DIR/1.png”);

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

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