在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...