• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB相机标定转XMl代码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
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人参与评论

请发表评论

全部评论

专题导读
上一篇:
DELPHI FastReport分组打印并且指定每页行数(不足填空行)发布时间:2022-07-18
下一篇:
delphi回调函数发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap