如何在c++中创建这个yml文件(使用opencv)
How to create this yml file in c++ (using opencv)
我有一个在Matlab中创建的yml文件,其他应用程序可以毫无问题地读取它。
生成的yml文件如下:
%YAML:1.0
myitems:
-
l: !!opencv-matrix
rows: 4
cols: 1
dt: d
data: [1.6040597671471776e+03, -5.9317478925963056e-02, -4.0214684178724552e-04, -1.0686329088084243e-03]
c: !!opencv-matrix
rows: 2
cols: 1
dt: d
data: [1.3524793229822997e+03, 1.8265878647908009e+03]
t: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [9.3969262078590843e-01, 0.0000000000000000e+00, -3.4202014332566871e-01, -4.2438920171761561e-02, 0.0000000000000000e+00, 1.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 3.4202014332566871e-01, 0.0000000000000000e+00, 9.3969262078590843e-01, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 1.0000000000000000e+00]
-
l: !!opencv-matrix
rows: 4
cols: 1
dt: d
data: [1.6035513799260334e+03, -5.8611163583081945e-02, -1.9961041844717854e-03, -5.7772898125416506e-04]
c: !!opencv-matrix
rows: 2
cols: 1
dt: d
data: [1.3748405387479991e+03, 1.8628349599457656e+03]
t: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [-3.5201238807168519e-03, 9.3725029294111806e-01, -3.4863949447768083e-01, -4.2438920171761561e-02, -9.9998222086817701e-01, -1.6211348792076591e-03, 5.7384553018963221e-03, 0.0000000000000000e+00, 4.8131772679647451e-03, 3.4865349604369644e-01, 9.3723933604021081e-01, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 1.0000000000000000e+00]
-
l: !!opencv-matrix
rows: 4
cols: 1
dt: d
data: [1.5975668104752576e+03, -6.0221428459880273e-02, 8.9637904632662471e-04, -1.4944214307671109e-03]
c: !!opencv-matrix
rows: 2
cols: 1
dt: d
data: [1.3643523108057761e+03, 1.8451412053529805e+03]
t: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [-9.4399816022253547e-01, -6.0251161920311046e-04, -3.2995016362507984e-01, -4.2438920171761561e-02, 1.5488563810861311e-03, -9.9999540679978660e-01, -2.6052683623591024e-03, 0.0000000000000000e+00, -3.2994707839345838e-01, -2.9704139573240884e-03, 9.4399475745395067e-01, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 1.0000000000000000e+00]
-
l: !!opencv-matrix
rows: 4
cols: 1
dt: d
data: [1.5966964716049326e+03, -5.7396164460785576e-02, -1.9997766878354986e-03, -6.3293353675991561e-04]
c: !!opencv-matrix
rows: 2
cols: 1
dt: d
data: [1.3583936708783401e+03, 1.8439285997544673e+03]
t: !!opencv-matrix
rows: 4
cols: 4
dt: d
data: [-1.0822465368656472e-03, -9.3985931913280085e-01, -3.4156008107163421e-01, -4.2438920171761561e-02, 9.9999940770171103e-01, -9.7771219684243270e-04, -4.7819984029824587e-04, 0.0000000000000000e+00, 1.1549311909389662e-04, -3.4156039629630369e-01, 9.3985982058137330e-01, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 0.0000000000000000e+00, 1.0000000000000000e+00]
我在opencv(C++)中有这样的代码来创建相同的yml文件:
cv::FileStorage fs(fileName, cv::FileStorage::WRITE);
fs << "myitems";
fs<<"{" ;
for(int i=0;i<4;i++)
{
fs<<"-" ;
fs<<"{" ;
fs<<"l"<<cv::Mat(l);
fs<<"c"<<cv::Mat(c);
fs<<"t"<<cv::Mat(t);
fs << "}" ;
}
fs << "}" ;
但是当我运行这个代码时,我得到了错误:错误的元素名称在下面的行:
fs<<"-";
如何在opencv中创建类似的yml文件?
请注意,由于该文件由matlab生成并用于其他应用程序,我无法更改yml文件的格式。
以下是如何创建类似的YAML文件:
#include <opencv2/core/core.hpp>
#include <iostream>
int main()
{
cv::FileStorage fs("out.yaml", cv::FileStorage::WRITE);
fs << "myitems";
fs << "[" ;
for(int i=0; i<4; i++) {
fs << "{" ;
fs << "l" << cv::Mat::zeros(4,1,CV_64F);
fs << "c" << cv::Mat::zeros(2,1,CV_64F);
fs << "t" << cv::Mat::zeros(4,4,CV_64F);
fs << "}" ;
}
fs << "]" ;
return 0;
}
顶层节点"myitems"是一个由4个节点([
、...
、]
)组成的序列。每个序列项都是一个未命名的映射({
、...
、}
)。每个映射包含三个矩阵,分别命名为"l"、"c"answers"t"。
相关文章:
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 从YML文件OPENCV C 初始化摄像机参数
- 我需要帮助为C++设置.gitlab-ci.yml文件
- 如何在c++中创建这个yml文件(使用opencv)
- 解析第二个节点上嵌套的yml文件
- 在openv 1.0中打开yml文件
- 如何在opencv中访问yml文件的元素?
- 在Opencv - Optimization中加载YML文件
- 如何将yml文件连接到一个文件中