OpenCV FileStorage用法示例

以下是调用OpenCV FileStorage存储配置文件的示例,存储格式为yaml。

- OpenCv自带的数据格式不必多说,存储和读取都比较方便。

- 这里主要提一下std::vector的存取用"[]"来表示, std::map的存取用"{}"来表示

具体的用法可以参考以下示例:

void WriteConfigFile(string fpath)
{
    cv::FileStorage fs(fpath, cv::FileStorage::WRITE);

    fs << "frameCount" << 5;

    cv::Mat intriMat = (Mat_<double>(3, 3) << 1000, 0, 320, 0, 1000, 240, 0, 0, 1);
    cv::Mat distCoff = (Mat_<double>(5, 1) << 0.1, 0.01, -0.001, 0, 0);

    fs << "intriMat" << intriMat;
    fs << "distCoff" << distCoff;

    // '[]' means list
    // '{}' means map
    // ':' means to place the members in a single line
    //fs << "features" << "[:";
    fs << "features" << "[";

    for (int i = 0; i < 20; i++) {
        cv::Point2f prePt(rand() % 256, rand() % 256);
        cv::Point2f curPt(rand() % 256, rand() % 256);
        fs << "{:";
        fs << "prePt" << prePt << "curPt" << curPt;
        fs << "}";
    }
    fs << "]";
    fs.release();
}

void ReadConfigFile(string fpath)
{
    cv::FileStorage fs(fpath, cv::FileStorage::READ);

    int frameCnt;
    fs["frameCount"] >> frameCnt;
    cout << "frameCount: " << frameCnt << endl;

    cv::Mat intriMat;
    fs["intriMat"] >> intriMat;

    cout << "intriMat" << intriMat << endl;

    cv::FileNode featureNode = fs["features"];
    cv::FileNodeIterator it;

    for (it = featureNode.begin(); it != featureNode.end(); it++) {
        CV_POINT2 prePt, curPt;
        (*it)["prePt"] >> prePt;
        (*it)["curPt"] >> curPt;
        cout << "prePt:" << prePt << ", curPt" << curPt << endl;
    }
    fs.release();
}

    WriteConfigFile("test.yaml");
    ReadConfigFile("test.yaml");



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值