我正在使用带有OpenCV教程的相机校准(http://docs.opencv.org/doc/tutorials/calib3d/camera_calibration/camera_calibration.html)。当我使用.mp4视频文件作为输入时,我的程序失败并出现以下错误:
解析错误():icvXMLParse中有效的XML应该以'')开头,文件........ \ opencv \ modules \ core \ src \ persistence.cpp,第2252行

谁能告诉我我做错了吗?

最佳答案

在示例(camera_calibration.cpp)中,对readStringList方法进行此更改:

是:

static bool readStringList( const string& filename, vector<string>& l )
{
    l.clear();
    FileStorage fs(filename, FileStorage::READ);
    if( !fs.isOpened() )
        return false;

应该:
static bool readStringList( const string& filename, vector<string>& l )
{
    l.clear();
    FileStorage fs;
    try {
        fs.open(filename, FileStorage::READ);
    }
    catch (...) {
        return false;
    }
    if( !fs.isOpened() )
        return false;

然后,您可以使用视频文件名而不是xml输入文件,并且程序不会崩溃。如果输入文件不是xml / yml,则FileStorage构造函数和open方法将引发异常,并且需要捕获该异常。

关于c++ - OpenCV相机校准,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23267658/

10-11 22:11