栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

matlab导出相机标定数据

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

matlab导出相机标定数据

由于matlab标定数据比opencv的标定准一些,有时候会将matlab的标定参数导入自己程序中应用。

导出matlab标定参数
function writeXML(cameraParams,file)
%writeXML(cameraParams,file)
%功能:将相机校正的参数保存为xml文件
%输入:
%cameraParams:相机校正数据结构
%file:xml文件名
    xml = com.mathworks.xml.XMLUtils.createDocument('opencv_storage'); %创建xml文件对象
    root = xml.getDocumentElement; %获取根节点

    node_Intrinsic = createNode(xml, cameraParams.IntrinsicMatrix, 'camera-matrix');
    root.appendChild(node_Intrinsic);
    
    node_Translation = createNode(xml, cameraParams.TranslationVectors, 'translation');
    root.appendChild(node_Translation);
    
    node_Rotation = createNode(xml, cameraParams.RotationMatrices, 'rotation');
    root.appendChild(node_Rotation);
    
    xmlFileName = file;
    xmlwrite(xmlFileName,xml);
end


function [node] = createNode(xml, M, name)
    [H, W, C] = size(M);
    node = xml.createElement(name); %创建mat节点
    node.setAttribute('type_id','opencv-matrix'); %设置mat节点属性
    rows = xml.createElement('rows'); %创建行节点
    rows.appendChild(xml.createTextNode(sprintf('%d',H))); %创建文本节点,并作为行的子节点
    node.appendChild(rows); %将行节点作为mat子节点

    cols = xml.createElement('cols');
    cols.appendChild(xml.createTextNode(sprintf('%d',W)));
    node.appendChild(cols);

    dt = xml.createElement('dt');
    dt.appendChild(xml.createTextNode(sprintf('"%dd"',C)));
    node.appendChild(dt);

    data = xml.createElement('data');
    if C == 1 % 二维矩阵
        for i=1:H
            for j=1:W
                data.appendChild(xml.createTextNode(sprintf('%.16f ',M(i,j))));
            end
            data.appendChild(xml.createTextNode(sprintf('n')));
        end
    else % 三维矩阵
        for i=1:H
            for j=1:W
                for k = 1:C
                    data.appendChild(xml.createTextNode(sprintf('%.16f ',M(i,j,k))));
                end
                data.appendChild(xml.createTextNode(sprintf('n')));
            end
            data.appendChild(xml.createTextNode(sprintf('nn')));
        end
    end
    node.appendChild(data);
end
python中导入标定参数
file = cv.FileStorage(file_path, cv.FileStorage_READ)
mtx = file.getNode('camera-matrix').mat().T
Tmat = file.getNode('translation').mat()
Rmat = file.getNode('rotation').mat()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号