我正在使用带有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/