OpenCV相机校准

OpenCV Camera Calibration

本文关键字:相机 OpenCV      更新时间:2023-10-16

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