标定代码matlab,MATLAB相机标定转XMl代码

function writeXML(cameraParams,file)

%writeXML(cameraParams,file)

%功能:将相机校正的参数保存为xml文件

%输入:

%cameraParams:相机校正数据结构

%file:xml文件名

%说明在xml文件是由一层层的节点组成的。

%首先创建父节点 fatherNode,

%然后创建子节点 childNode=docNode.createElement(childNodeName),

%再将子节点添加到父节点 fatherNode.appendChild(childNode)

docNode = com.mathworks.xml.XMLUtils.createDocument('opencv_storage'); %创建xml文件对象

docRootNode = docNode.getDocumentElement; %获取根节点

IntrinsicMatrix = ((cameraParams.IntrinsicMatrix)'); %*相机内参矩阵,千万记住要转置*

RadialDistortion = cameraParams.RadialDistortion; %相机径向畸变参数向量1*3

TangentialDistortion =cameraParams.TangentialDistortion; %相机切向畸变向量1*2

%Distortion = [RadialDistortion(1:2),TangentialDistortion,RadialDistortion(3)]; %当RadialDistortion为3维时,构成opencv中的畸变系数向量[k1,k2,p1,p2,k3]

Distortion = [RadialDistortion(1:2),TangentialDistortion,0]; %当RadialDistortion为2维时,构成opencv中的畸变系数向量[k1,k2,p1,p2,k3]

camera_matrix = docNode.createElement('camera-matrix'); %创建mat节点

camera_matrix.setAttribute('type_id','opencv-matrix'); %设置mat节点属性

rows = docNode.createElement('rows'); %创建行节点

rows.appendChild(docNode.createTextNode(sprintf('%d',3))); %创建文本节点,并作为行的子节点

camera_matrix.appendChild(rows); %将行节点作为mat子节点

cols = docNode.createElement('cols');

cols.appendChild(docNode.createTextNode(sprintf('%d',3)));

camera_matrix.appendChild(cols);

dt = docNode.createElement('dt');

dt.appendChild(docNode.createTextNode('d'));

camera_matrix.appendChild(dt);

data = docNode.createElement('data');

for i=1:3

for j=1:3

data.appendChild(docNode.createTextNode(sprintf('%.16f ',IntrinsicMatrix(i,j))));

end

data.appendChild(docNode.createTextNode(newline));

end

camera_matrix.appendChild(data);

docRootNode.appendChild(camera_matrix);

distortion = docNode.createElement('distortion');

distortion.setAttribute('type_id','opencv-matrix');

rows = docNode.createElement('rows');

rows.appendChild(docNode.createTextNode(sprintf('%d',5)));

distortion.appendChild(rows);

cols = docNode.createElement('cols');

cols.appendChild(docNode.createTextNode(sprintf('%d',1)));

distortion.appendChild(cols);

dt = docNode.createElement('dt');

dt.appendChild(docNode.createTextNode('d'));

distortion.appendChild(dt);

data = docNode.createElement('data');

for i=1:5

data.appendChild(docNode.createTextNode(sprintf('%.16f ',Distortion(i))));

end

distortion.appendChild(data);

docRootNode.appendChild(distortion);

xmlFileName = file;

xmlwrite(xmlFileName,docNode);

end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值