matlab生成opencv需要的xml文件
来源:互联网 发布:ppcoin源码 编辑:程序博客网 时间:2024/05/18 17:57
昨天花了一整天时间弄了matlab中的xml文件生成到opencv中读取的程序。虽然花了不少精力在这种文件格式上面,但庆幸的是,还是成功了。
为什么要进行这两者之间的转换:最近在做关于双目视觉车辆定位的项目,要在opencv中处理不少Mat的数据,而这些数据主要来源于matlab中(我主要是opencv编程,有个博士师兄负责matlab中的数据处理),所以想到用xml文件进行中间的转换。当然,你也可以在opencv下配置相应的matlab—Mat头文件,若此,你要考虑matlab的版本(x64或者x86)和你的编译器版本(x86或x64),也是蛮头疼的。
xml文件定义:它是Extentsible Markup Language(可扩展标记语言)的缩 写,是一种可以用来创建自定义标记的标记语言。它没有标签集(tag set),也没有语法规则(grammatical rule),但 是它有句法规则(syntax rule)。 XML文档可以是有效的(valid),但并非一定要求有效。所谓有效文档是指其符合其文档类型定义(DTD)的文档。如果一个文档符合一个模式(schema)的规定 ,那么这个文档是”模式有效的(schema valid)”。
下面是我用matlab生成的相应opencv下能读的xml文件:
xml文件格式简介:
下面附上代码:
function createxml(name1,datatest1,name2,datatest2) % name是输入的文件名,datatest是matlab中的矩阵(一般都是float格式存储的)xdoc=com.mathworks.xml.XMLUtils.createDocument('opencv_storage');xroot=xdoc.getDocumentElement;%========定义矩阵,写入xml[m1,n1]=size(datatest1);type=xdoc.createElement(name1);xroot.appendChild(type);type.setAttribute('type_id','opencv-matrix')rows=xdoc.createElement('rows');rows.appendChild(xdoc.createTextNode(sprintf('%d',m1)));type.appendChild(rows);cols=xdoc.createElement('cols');cols.appendChild(xdoc.createTextNode(sprintf('%d',n1)));type.appendChild(cols);dt=xdoc.createElement('dt');dt.appendChild(xdoc.createTextNode(sprintf('%s','f')));type.appendChild(dt);data=xdoc.createElement('data');data.appendChild(xdoc.createTextNode(sprintf('%f ',datatest1)));type.appendChild(data);%=======结束写入%========定义数组,写入xml[m2,n2]=size(datatest2);type=xdoc.createElement(name2);xroot.appendChild(type);type.setAttribute('type_id','opencv-matrix')rows=xdoc.createElement('rows');rows.appendChild(xdoc.createTextNode(sprintf('%d',m2)));type.appendChild(rows);cols=xdoc.createElement('cols');cols.appendChild(xdoc.createTextNode(sprintf('%d',n2)));type.appendChild(cols);dt=xdoc.createElement('dt');dt.appendChild(xdoc.createTextNode(sprintf('%s','f')));type.appendChild(dt);data=xdoc.createElement('data');data.appendChild(xdoc.createTextNode(sprintf('%f ',datatest2)));type.appendChild(data);str=strcat(name1,'.xml');xmlwrite(str,xdoc);end
调用函数:
clc;clear all;data_1x9=[1,2,3,4,5,6,7,8,9];data_3x3=[1,2,3;4,5,6;7,8,9];createxml('Mat1x9',data_1x9,'Mat3x3',data_3x3);
主要定义了data_1x9和data_3x3的矩阵,然后将这两个矩阵存入xml文件中。
有一点需要注意的是:输出的xml文件第一行中xml version=”1.0”
encoding=”utf-8” 需要删去 encoding=”utf-8” 否则会出现opencv不可读的现象。要保留两个问号!另外:在用matlab调试代码的时候出现类似于“JAVA 数组维数超标”的提示,让我不禁发觉,matlab中的xml文件是用JAVA语言的,是一种网络格式的文件,这就是和opencv里面生成的xml的区别!opencv里面生成的xml文件是基于C++的。
从matlab中写xml文件,然后用opencv读出来,加上看相关资料,花了整整一天时间,但是今天却发现这个没有想象中的那么重要,有点遗憾,
遂写成blog与大家共享。
这是我入研究生以来的第一篇C博客,如果里面有什么写的不对的地方,望各位批评指正,多谢!
最后非常感谢:
(http://wzy2px.blog.sohu.com/242141572.html)公开的代码。
本文主要说明了xml文件属性和怎么从matlab里面生成opencv需要的xml文件格式的操作,对于matlab和opencv读写xml文件具体参看一下网页:
opencv读写xml:
(http://www.cnblogs.com/summerRQ/articles/2524560.html)
matlab读写xml:
(http://www.cnblogs.com/emituofo/archive/2011/11/06/2238219.html)
- matlab生成opencv需要的xml文件
- opencv 创建和读取xml文件以及matlab生成xml
- opencv运用matlab生成的C++文件
- OpenCv下的xml文件在matlab下的读入
- matlab下生成的矩阵存入xml文件中
- matlab生成xml文件代码示例
- opencv 需要的头文件
- Opencv:haartraining生成.xml文件过程
- Matlab读取xml文件——OpenCV通过FileStorage存储的矩阵Mat
- XML文件的生成
- Xml文件的生成
- opencv的XML文件读写
- Opencv的xml文件操作
- 用mybatis-gennerator插件自动生成mybatis所需要的dao、bean、mapper xml文件
- 有关lomboz生成的ejb-jar。xml和jboss。xml文件需要修改地方的记录
- OpenCV 训练分类器生成XML文件【完整过程】
- PHP生成的XML文件
- 生成XML文件的步骤
- 关于Hashcode的作用
- 面试---i++在两个线程分别执行100次,最大值和最小值分别多少
- 使用数组实现的简单队列结构
- Android页面初始化时让控件失去焦点
- apue-intro
- matlab生成opencv需要的xml文件
- ZOJ.2405 Specialized Four-Digit Numbers【水,暴力】 2015/09/24
- 硅藻泥行业四协会上书工信部呼吁严肃硅藻泥标准审定审批
- LIB和DLL的区别与使用
- HEOI2012 朋友圈
- 盘点 DevOps 世界的杰出女性(一)
- strtoul
- poj3169
- IOS NSBundle