以下代码是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;
答案 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文件。我遇到了同样的问题,这就是我解决它的方法。