配置文件应该放在哪里?

时间:2012-05-15 15:33:35

标签: c++ visual-studio-2010 opencv camera-calibration 3d-reconstruction

以下代码是OpenCV中相机校准程序的一部分。但是当我运行程序时出现错误:它说

  

无法打开配置文件

我将配置文件放在c:/Nn/default.xml中,但我仍然收到此错误

你能帮我解决一下代码的错误吗?我是否将文件放在错误的路径中?

int main(int argc, char* argv[])
{
help();
Settings s; 
const string inputSettingsFile = argc > 1 ? argv[1] : "c:/Nn/default.xml";
FileStorage fs(inputSettingsFile, FileStorage::READ); // Read the settings
if (!fs.isOpened())
{
    cout << "Could not open the configuration file: \"" << inputSettingsFile << "\"" <<            endl; 
    return -1;
}
fs["Settings"] >> s; 
fs.release();                                         // close Settings file

if (!s.goodInput)
{
    cout << "Invalid input detected. Application stopping. " << endl;
    return -1;
}

vector<vector<Point2f> > imagePoints;
Mat cameraMatrix, distCoeffs;
Size imageSize;
int mode = s.inputType == Settings::IMAGE_LIST ? CAPTURING : DETECTION;
clock_t prevTimestamp = 0;
const Scalar RED(0,0,255), GREEN(0,255,0);
const char ESC_KEY = 27;

4 个答案:

答案 0 :(得分:1)

我同意Ujjwal,我遇到了同样的问题,因为我在链接器的\ opencv \ build \ x86 \ vc10 \ lib下包含了* .lib和* d.lib文件。

如果您正在调试模式下在VS2010中进行编译,则只包括在&amp; opencv \ build \ x86 \ vc10 \ lib&#39;下的d结尾的文件。在您的链接器中它应该解决问题。如果您在发布模式下进行编译,则只包括不以d。

结尾的.lib文件

另外,因为你正在使用&#39; windoze&#39;我建议你改变你的输入文件&#34; c:/Nn/default.xml" to&#34; c:\\ Nn \\ default.xml&#34;。

答案 1 :(得分:0)

我遇到了同样的问题。但我通过F:\default.xml

开始工作

试一试。

答案 2 :(得分:-1)

没有标准的解决方案。首先,有两种类型 配置文件:用户提供的配置文件 以他喜欢的方式(颜色等)以及您使用的方式编程 在内部避免重新编译和重新生成新的二进制文件 任何时候一些小的外部因素改变。第一个是传统的 在Unix下的$HOME下,在单个文件或名称的目录中 以.开头;在Windows下,我认为他们通常都在 c:\Documents and Settings\username\ApplicationData\appliname。 对于内部配置数据,在Unix下,我是一般的 用户设置指定a的环境变量的约定 根;您的可执行文件位于此{和{1}}目录下,以及任何 bin目录中的配置数据。 (没有可靠的方法 在Unix下知道从哪里加载。)在Windows下, 配置数据与可执行文件位于同一目录中,并且 程序使用etc来查找。

答案 3 :(得分:-1)

检查您是否在链接器输入部分中指定了正确的.lib文件(假设您使用的是visual studio 2010)。 对于调试模式使用---- d.lib文件和发布模式使用---- .lib文件。我遇到了同样的问题,这就是我解决它的方法。