我正在使用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: \OpenCVProjects\ConsoleApplication1\x64\Release>ConsoleApplication1.exe-w 9-h 6-s 2-o摄像机.yml-op-oe视频.mp4
当使用摄像机的实时视频作为输入时,可以使用以下热键已使用:,'q'-退出程序"g"-开始捕获图像"u"-打开/关闭不失真开关校准成功。平均重投影误差=0.49