3

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

}

我也尝试使用“./”“/”“//”“\”和“\”,但它仍然无法正常工作!

4

2 回答 2

1

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

于 2015-03-12T18:42:56.017 回答
0

我可以为您提供以下方法来处理您的问题:

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

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

于 2015-03-12T20:49:06.393 回答