【OpenCV】OpenCv讀取xml/yml相關問題
阿新 • • 發佈:2019-01-02
As an example, if you have a yml file
like this one, that I'll call demo.yml
%YAML:1.0 Variable1: !!opencv-matrix rows: 4 cols: 5 dt: f data: [ -1.60522782e-03, -5.93489595e-03, 2.92204670e-03, 1.14785777e-02, -1.57432575e-02, -2.17529312e-02, 4.05947529e-02, 6.56594411e-02, 1.24527821e-02, 3.19751091e-02, 5.41692637e-02, 4.04683389e-02, 2.59191263e-03, 1.15112308e-03, 1.11024221e-02, 4.03668173e-03, -3.19138430e-02, -9.40114353e-03, 4.93452176e-02, 5.73473945e-02 ] Variable2: !!opencv-matrix rows: 7 cols: 2 dt: f data: [ -2.17529312e-02, 4.05947529e-02, 5.73473945e-02, 6.56594411e-02, 1.24527821e-02, 3.19751091e-02, 5.41692637e-02, 4.03668173e-03, -3.19138430e-02, -9.40114353e-03, 4.93452176e-02, 4.04683389e-02, 2.59191263e-03, 1.15112308e-03 ]
Then, you can use OpenCV FileStorage class to load the variables contained on this demo.yml file as:
#include <iostream> #include <string> #include <cv.h> #include <highgui.h> using namespace cv; using namespace std; int main (int argc, char * const argv[]) { Mat var1; Mat var2; string demoFile = "demo.yml"; FileStorage fsDemo( demoFile, FileStorage::READ); fsDemo["Variable1"] >> var1; fsDemo["Variable2"] >> var2; cout << "Print the contents of var1:" << endl; cout << var1 << endl << endl; cout << "Print the contents of var2:" << endl; cout << var2 << endl; fsDemo.release(); return 0; }