1 参数选择 径向畸变3个参数还是两个参数
默认两个参数
如果是三个参数
2准备转化生成结果
二参数的转化代码
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锟节碉拷 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(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
二参数的保存结果
<"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>
三参数的转化代码
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)]; %构成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(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
三参数的转化保存结果
<"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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“如何基于matlab相机标定导出xml文件”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
2025年02月23日
2025年02月23日
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]