OpenCV中讀取YAML檔案方法

2021-08-07 21:31:29 字數 2223 閱讀 7784

在cv處理中,一般要用到乙個甚至多個相機引數,所謂的相機引數,也就是指相機外參、內參、畸變引數等,它們一般以矩陣的形式存在,如果都寫在**裡面,一來顯得臃腫拖沓,二來也不方便修改引數,opencv提供了yaml檔案擴充套件配置的功能,也就是filestorage類,下面用一段**展示它的基本用法。

下面這個名為mycamera.yml的yaml檔案中按順序儲存了四個相機的內參和畸變引數:

%yaml:1.0

calibratetime: "2023年09月07日 zuo丶\n"

n_camera: 4

cam_0_matrix: !

!opencv-matrix

rows: 3

cols: 3

dt: d

data: [ 4.0601703e+02, 0., 3.195e+02, 0.,

4.0508811e+02, 2.395e+02, 0., 0., 1. ]

cam_0_distcoeffs: !

!opencv-matrix

rows: 5

cols: 1

dt: d

data: [ -3.3078e-01, 9.913e-02, 2.31e-03, -1.49e-03,

0 ]cam_1_matrix: !

!opencv-matrix

rows: 3

cols: 3

dt: d

data: [ 4.0601703e+02, 0., 3.195e+02, 0.,

4.0508811e+02, 2.395e+02, 0., 0., 1. ]

cam_1_distcoeffs: !

!opencv-matrix

rows: 5

cols: 1

dt: d

data: [ -3.3078e-01, 9.913e-02, 2.31e-03, -1.49e-03,

0 ]cam_2_matrix: !

!opencv-matrix

rows: 3

cols: 3

dt: d

data: [ 4.0601703e+02, 0., 3.195e+02, 0.,

4.0508811e+02, 2.395e+02, 0., 0., 1. ]

cam_2_distcoeffs: !

!opencv-matrix

rows: 5

cols: 1

dt: d

data: [ -3.3078e-01, 9.913e-02, 2.31e-03, -1.49e-03,

0 ]cam_3_matrix: !

!opencv-matrix

rows: 3

cols: 3

dt: d

data: [ 4.0601703e+02, 0., 3.195e+02, 0.,

4.0508811e+02, 2.395e+02, 0., 0., 1. ]

cam_3_distcoeffs: !

!opencv-matrix

rows: 5

cols: 1

dt: d

data: [ -3.3078e-01, 9.913e-02, 2.31e-03, -1.49e-03,

0 ]

接下來用下面的loadparams函式去讀取上面的yaml檔案。

bool loadparams(std::string filename, std::vector

& vcameramatrix, std::vector

& vdistcoeffs)

int n_camera = (int)fs["n_camera"];

vcameramatrix.resize(n_camera);

vdistcoeffs.resize(n_camera);

for (int i = 0; i < n_camera; i++)

fs.release();

return

true;

}

main.cpp

#include 

#include

int main(int argc, char* argv)

使用Opencv 寫入 讀取Yaml檔案

在我們的工程中,經常需要讀取相關的配置引數,個人比較喜歡使用yaml檔案來配置。下面介紹使用opencv輕鬆寫入 讀取yaml檔案的方法。include include include int main int argc,char ar fs write imagesize image size c...

ruby 讀取yaml檔案

假如我們有乙個寫好的yaml檔案 program id 1 input 1 2 output 3 注意 後面必須有乙個空格 讀取方式 require yaml problem yaml.load file.open a.yaml puts problem id is puts problem inp...

python讀取 YAML檔案

yaml在我的理解看來,它是一種資料的格式,他的格式跟json很相近,但是yaml支援注釋 1.物件名 健 空格 對。寫法一 desired caps platformname android devicename xiaomi mix platformversion 5.1 unicodekeyb...