最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何基于matlab相機標(biāo)定導(dǎo)出xml文件

 更新時間:2020年11月02日 10:52:05   作者:小蝸牛嘰咕往前  
這篇文章主要介紹了如何基于matlab相機標(biāo)定導(dǎo)出xml文件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1 參數(shù)選擇 徑向畸變3個參數(shù)還是兩個參數(shù)

默認(rèn)兩個參數(shù)

如果是三個參數(shù)

2準(zhǔn)備轉(zhuǎn)化生成結(jié)果

二參數(shù)的轉(zhuǎn)化代碼

writeExternalandIntrinsicMatrix(cameraParams62,'cameraParams622.xml');

function writeExternalandIntrinsicMatrix(cameraParams,file)
%writeXML(cameraParams,file)
 
docNode = com.mathworks.xml.XMLUtils.createDocument('opencv_storage');
docRootNode = docNode.getDocumentElement;
IntrinsicMatrix = ((cameraParams.IntrinsicMatrix)');
 
TangentialDistortion =cameraParams.TangentialDistortion;
%Distortion = [cameraParams.RadialDistortion(1:2),TangentialDistortion, cameraParams.RadialDistortion(3)];
Distortion = [cameraParams.RadialDistortion(1:2),TangentialDistortion,0];
FocalLength = cameraParams.FocalLength;
camera_matrix = docNode.createElement('IntrinsicCam'); %錕斤拷錕斤拷mat錕節(jié)碉拷
camera_matrix.setAttribute('type_id','opencv-matrix'); %錕斤拷錕斤拷mat錕節(jié)碉拷錕斤拷錕斤拷
rows = docNode.createElement('rows'); %錕斤拷錕斤拷錕叫節(jié)碉拷
rows.appendChild(docNode.createTextNode(sprintf('%d',3))); %錕斤拷錕斤拷錕僥憋拷錕節(jié)點,錕斤拷錕斤拷為錕叫碉拷錕接節(jié)碉拷
camera_matrix.appendChild(rows); %錕斤拷錕叫節(jié)碉拷錕斤拷為mat錕接節(jié)碉拷
 
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(sprintf('\n')));
end
camera_matrix.appendChild(data);
docRootNode.appendChild(camera_matrix);
 
distortion = docNode.createElement('DistortionCam');
distortion.setAttribute('type_id','opencv-matrix');
rows = docNode.createElement('rows');
rows.appendChild(docNode.createTextNode(sprintf('%d',1)));
distortion.appendChild(rows);
 
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',5)));
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);
 
 
focalLength = docNode.createElement('FocalLength');
focalLength.setAttribute('type_id','opencv-matrix');
rows = docNode.createElement('rows');
rows.appendChild(docNode.createTextNode(sprintf('%d',1)));
focalLength.appendChild(rows);
cols = docNode.createElement('cols');
cols.appendChild(docNode.createTextNode(sprintf('%d',1)));
focalLength.appendChild(cols);
dt = docNode.createElement('dt');
dt.appendChild(docNode.createTextNode('d'));
focalLength.appendChild(dt);
data = docNode.createElement('data');
for i=1:1
   data.appendChild(docNode.createTextNode(sprintf('%.16f ',FocalLength(i))));
end
focalLength.appendChild(data);
docRootNode.appendChild(focalLength);
 
% distortion = docNode.createElement('Pmatrix');
% distortion.setAttribute('type_id','opencv-matrix');
% rows = docNode.createElement('rows');
% rows.appendChild(docNode.createTextNode(sprintf('%d',1)));
% distortion.appendChild(rows);
%
% cols = docNode.createElement('cols');
% cols.appendChild(docNode.createTextNode(sprintf('%d',4)));
% distortion.appendChild(cols);
%
% dt = docNode.createElement('dt');
% dt.appendChild(docNode.createTextNode('d'));
% distortion.appendChild(dt);
% data = docNode.createElement('data');
% for i=1:4
%    data.appendChild(docNode.createTextNode(sprintf('%.16f ',Distortion(i))));
% end
% distortion.appendChild(data);
% docRootNode.appendChild(distortion);
 
 
xmlFileName = file;
xmlwrite(xmlFileName,docNode);
end

二參數(shù)的保存結(jié)果

<?xml version="1.0" encoding="utf-8"?>
<opencv_storage>
  <IntrinsicCam type_id="opencv-matrix">
   <rows>3</rows>
   <cols>3</cols>
   <dt>d</dt>
   <data>1558.5669994681102253 0.0000000000000000 821.5211092415044050
0.0000000000000000 1557.8077127262038175 460.9748043702705331
0.0000000000000000 0.0000000000000000 1.0000000000000000
</data>
  </IntrinsicCam>
  <DistortionCam type_id="opencv-matrix">
   <rows>1</rows>
   <cols>5</cols>
   <dt>d</dt>
   <data>-0.1873006682834817 0.0171597428423078 0.0000000000000000 0.0000000000000000 0.0000000000000000 </data>
  </DistortionCam>
  <FocalLength type_id="opencv-matrix">
   <rows>1</rows>
   <cols>1</cols>
   <dt>d</dt>
   <data>1558.5669994681102253 </data>
  </FocalLength>
</opencv_storage>

三參數(shù)的轉(zhuǎn)化代碼

function writeXML(cameraParams,file)
%writeXML(cameraParams,file)
%功能:將相機校正的參數(shù)保存為xml文件
%輸入:
%cameraParams:相機校正數(shù)據(jù)結(jié)構(gòu)
%file:xml文件名
%說明在xml文件是由一層層的節(jié)點組成的。
%首先創(chuàng)建父節(jié)點 fatherNode,
%然后創(chuàng)建子節(jié)點 childNode=docNode.createElement(childNodeName),
%再將子節(jié)點添加到父節(jié)點 fatherNode.appendChild(childNode)
docNode = com.mathworks.xml.XMLUtils.createDocument('opencv_storage'); %創(chuàng)建xml文件對象
docRootNode = docNode.getDocumentElement; %獲取根節(jié)點
 
IntrinsicMatrix = (cameraParams.IntrinsicMatrix)'; %相機內(nèi)參矩陣
RadialDistortion = cameraParams.RadialDistortion; %相機徑向畸變參數(shù)向量1*3
TangentialDistortion =cameraParams.TangentialDistortion; %相機切向畸變向量1*2
  Distortion = [RadialDistortion(1:2),TangentialDistortion,RadialDistortion(3)]; %構(gòu)成opencv中的畸變系數(shù)向量[k1,k2,p1,p2,k3]
 
camera_matrix = docNode.createElement('camera-matrix'); %創(chuàng)建mat節(jié)點
camera_matrix.setAttribute('type_id','opencv-matrix'); %設(shè)置mat節(jié)點屬性
rows = docNode.createElement('rows'); %創(chuàng)建行節(jié)點
rows.appendChild(docNode.createTextNode(sprintf('%d',3))); %創(chuàng)建文本節(jié)點,并作為行的子節(jié)點
camera_matrix.appendChild(rows); %將行節(jié)點作為mat子節(jié)點
 
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(sprintf('\n')));
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

三參數(shù)的轉(zhuǎn)化保存結(jié)果

<?xml version="1.0" encoding="utf-8"?>
<opencv_storage>
  <camera-matrix type_id="opencv-matrix">
   <rows>3</rows>
   <cols>3</cols>
   <dt>d</dt>
   <data>1558.6100144620272658 0.0000000000000000 821.6453269280840459
0.0000000000000000 1557.8120286433929778 460.8682816753835141
0.0000000000000000 0.0000000000000000 1.0000000000000000
</data>
  </camera-matrix>
  <distortion type_id="opencv-matrix">
   <rows>5</rows>
   <cols>1</cols>
   <dt>d</dt>
   <data>-0.1840928673709393 -0.0328189923757994 0.0000000000000000 0.0000000000000000 0.2205440258401062 </data>
  </distortion>
</opencv_storage>

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python之tkinter文字區(qū)域Text使用及說明

    Python之tkinter文字區(qū)域Text使用及說明

    這篇文章主要介紹了Python之tkinter文字區(qū)域Text使用及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 利用Pygame制作簡單動畫的示例詳解

    利用Pygame制作簡單動畫的示例詳解

    Pygame是被設(shè)計用來寫游戲的python模塊集合,Pygame是在優(yōu)秀的SDL庫之上開發(fā)的功能性包。本文將利用Pygame制作簡易的動畫,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • 利用Pyhton中的requests包進行網(wǎng)頁訪問測試的方法

    利用Pyhton中的requests包進行網(wǎng)頁訪問測試的方法

    今天小編就為大家分享一篇利用Pyhton中的requests包進行網(wǎng)頁訪問測試的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 對Python中內(nèi)置異常層次結(jié)構(gòu)詳解

    對Python中內(nèi)置異常層次結(jié)構(gòu)詳解

    今天小編就為大家分享一篇對Python中內(nèi)置異常層次結(jié)構(gòu)詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • Python 管理依賴包工具pip, virtualenv詳解

    Python 管理依賴包工具pip, virtualenv詳解

    管理依賴包是Python開發(fā)中不可或缺的一部分,通過pip、virtualenv和pipenv等工具,我們可以有效地管理包和虛擬環(huán)境,確保項目的可移植性和一致性,這篇文章主要介紹了Python 管理依賴包(pip, virtualenv),需要的朋友可以參考下
    2024-07-07
  • Python數(shù)據(jù)類型及常用方法

    Python數(shù)據(jù)類型及常用方法

    這篇文章主要介紹了Python數(shù)據(jù)類型及常用方法?,文章主要給大家分享Python的一些常用數(shù)據(jù)類型,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-04-04
  • python運行時強制刷新緩沖區(qū)的方法

    python運行時強制刷新緩沖區(qū)的方法

    今天小編就為大家分享一篇python運行時強制刷新緩沖區(qū)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python 模擬登錄B站的示例代碼

    python 模擬登錄B站的示例代碼

    這篇文章主要介紹了python 模擬登錄B站的示例代碼,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • Python利用wxPython制作一個有趣的驗證碼生成器

    Python利用wxPython制作一個有趣的驗證碼生成器

    這篇文章主要為大家詳細(xì)介紹了Python如何利用wxPython制作一個簡單有趣的驗證碼生成器,文中的示例代碼講解詳細(xì),需要的小伙伴可以了解一下
    2023-04-04
  • Python內(nèi)存管理與泄漏排查實戰(zhàn)分享

    Python內(nèi)存管理與泄漏排查實戰(zhàn)分享

    這篇文章主要介紹了Python內(nèi)存管理與泄漏排查實戰(zhàn),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03

最新評論

瑞金市| 如皋市| 保定市| 渭南市| 邢台市| 渝中区| 勃利县| 合肥市| 徐州市| 永州市| 邓州市| 新干县| 南通市| 咸阳市| 托克逊县| 南宁市| 米易县| 罗定市| 开原市| 长海县| 加查县| 盐亭县| 灵石县| 锡林浩特市| 治多县| 临颍县| 四平市| 永顺县| 清苑县| 新昌县| 周至县| 监利县| 仁怀市| 丹东市| 集安市| 鹰潭市| 团风县| 石泉县| 蚌埠市| 永春县| 泰和县|