zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    wx_sample.php

    手机装linux系统
    MySQL导入导出命令
    PHP对表单提交特殊字符的过滤和处理
    sublime开启php自动代码补全
    寻找Linux单机负载瓶颈
    怎样成为PHP 方向的一个合格的架构师
    说说大型高并发高负载网站的系统架构
    数据库水平分割,垂直分割,库表散列浅谈
  • 原文地址:https://www.cnblogs.com/xingkongcanghai/p/11862534.html
Copyright © 2011-2022 走看看