Use Opencv write, read Yaml file

In our project, often you need to read the relevant configuration parameters, personally prefer to use Yaml file to configure. Here are easy to use opencv writing method Yaml file read.

1. Write an example file:

#include <opencv2/opencv.hpp>
#include <time.h>
#include <iostream>

int main(int argc, char** argv)
{
  //write a yaml file
  cv::FileStorage fs_write("./test.yaml", cv::FileStorage::WRITE);

  time_t rawtime;
  time(&rawtime);
  fs_write << "Time" << asctime(localtime(&rawtime));
  
  std::vector<int> image_size = {1280, 800};
  fs_write << "imageSize" << image_size; 

  cv::Mat camera_matrix = (cv::Mat_<double>(3, 3) << 190, 0, 640, 
                                                     0, 190, 400, 
                                                     0, 0, 1);
  cv::Mat distort_coefficient = (cv::Mat_<double>(5, 1) << 0.1, 0.01, -0.001, 0, 0);
  fs_write << "cameraMatrix" << camera_matrix << "distCoeffs" << distort_coefficient;
    
  fs_write.release();

  return 0;
}

Description:

  1. Use cv :: FileStorage create a file object, open the file
  2. Use << write information to a file
  3. release () to close the file

Output file Results:

%YAML:1.0
---
Time: "Thu Nov 28 14:02:31 2019\n"
imageSize: [ 1280, 800 ]
cameraMatrix: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 190., 0., 640., 0., 190., 400., 0., 0., 1. ]
distCoeffs: !!opencv-matrix
   rows: 5
   cols: 1
   dt: d
   data: [ 1.0000000000000001e-01, 1.0000000000000000e-02,
       -1.0000000000000000e-03, 0., 0. ]

2. read the file examples:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <vector>

int main(int argc, char **argv)
{
    //read a yaml file
    cv::FileStorage fs_read("./test.yaml", cv::FileStorage::READ);

    std::string time;
    //second method:use FileNode::operator >>
    fs_read["Time"] >> time;

    std::vector<int> image_size;
    fs_read["imageSize"] >> image_size;

    cv::Mat camera_matrix, distort_coefficient;
    fs_read["cameraMatrix"] >> camera_matrix;
    fs_read["distCoeffs"] >> distort_coefficient;

    std::cout << "Time: " << time << std::endl
              << "cameraMatrix: " << camera_matrix << std::endl
              << "distCoeffs: " << distort_coefficient << std::endl;

    fs_read.release();

    return 0;
}

 

Released six original articles · won praise 0 · Views 163

Guess you like

Origin blog.csdn.net/feiyang_luo/article/details/103291475