本文的缘起是我要用 OpenCV 库中的函数读取本地的图像,但是在文件路径名上碰到了一点挫折。本文探究 Visual Studio 2019 项目的当前目录。牵涉到计算机科学与技术的三个概念:当前目录(current directory),绝对路径(absolute path)和相对路径(relative path)
项目有两种情况:
cmake+Visual Studio纯使用 Visual Studio “文件”-“新建”-“项目”生成的项目 1.cmake+Visual Studio
在这种情况下,项目的当前目录是可执行文件(以.exe后缀结尾的文件)所在的目录。本文中举的例子的可执行文件所在的目录的绝对路径是:
binocular_stereooutbuildx64-Debug
其中,binocular_stereo是项目名。
可执行文件所在目录的截图如图1所示。
需要导入的目标文件 r_1.png 所在的目录是:
binocular_stereo
如图2所示:
使用绝对路径读取 r_1.png 的代码如下
imgR = cv::imread("D:/binocular_stereo/r_1.png", 0)
使用相对路径读取 r_1.png 的代码如下:
imgR = cv::imread("../../../r_1.png",0);
注意:Windows 10下获取文件的路径的分隔符是反斜杠 “”,在cv::imread函数中却是用正斜杠 "/"分隔。而且 ../是表示上一层目录。
2.纯Visual Studio 项目项目的当前目录是源文件(以.cpp为后缀)所在的目录。
源文件所在的目录的截图如 图3 所示。
使用相对路径读取 ansi.txt 的代码如下:
string filename = "ansi.txt"; ifstream fin(filename.c_str()); if (!fin.is_open()) { cout << "open failed!n"; }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)