3

以下代码是 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

4 回答 4

1

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

如果您在调试模式下在 VS2010 中编译,则仅在链接器中的 'opencv\build\x86\vc10\lib' 下包含以 d 结尾的文件,它应该可以解决问题。如果您在发布模式下编译,则仅包含不以 d 结尾的 .lib 文件。

此外,由于您使用的是“windoze”,我建议您将输入文件从“c:/Nn/default.xml”更改为“c:\\Nn\\default.xml”。

于 2014-02-05T04:18:07.350 回答
0

我面临同样的问题。但我得到了它的工作F:\default.xml

试试看。

于 2015-11-27T11:15:27.993 回答
-1

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

于 2012-05-15T16:10:44.673 回答
-1

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

于 2013-02-08T10:11:32.840 回答