opencv matlab 博士,opencv读matlab中.mat文件

遇到一个问题,需要将matlab中的矩阵用opencv打开。故尝试了下在matlab中编辑.xml文件,用opencv中的cvLoad调用。

首先用opencv自带函数生成一个.xml文件

double a[9]={2,2,3,4,5,6,1,2,2};

CvMat *testmat=cvCreateMat(3,3,CV_64FC1);

cvInitMatHeader(testmat,3,3,CV_64FC1,a);

cvSave("my.xml",testmat);

打开后格式为

3

3

d

2. 2. 3. 4. 5. 6. 1. 2. 2.

在matlab中编写文件,用xmlwrite生成.xml文件

function createxml(name,datatest) % name是输入的文件名,data是matlab中的矩阵(一般都是float格式存储的)

xdoc=com.mathworks.xml.XMLUtils.createDocument(‘ opencv_storage');

xroot=xdoc.getDocumentElement;

%

[m,n]=size(datatest);

type=xdoc.createElement(name);

xroot.appendChild(type);

type.setAttribute(‘ type_id',’ opencv-matrix')

%

rows=xdoc.createElement(’ rows');

rows.appendChild(xdoc.createTextNode(sprintf('%d',m)));

type.appendChild(rows);

cols=xdoc.createElement(‘ cols');

cols.appendChild(xdoc.createTextNode(sprintf('%d',n)));

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 ',datatest)));

type.appendChild(data);

str=strcat(name,‘ .xml');

xmlwrite(str,xdoc);

end

输出的xml文件第一行<?xml  version="1.0" encoding="utf-8"?> 需要删去encoding="utf-8" 否则会出现opencv不可读的现象。

此时的xml便可以直接用opencv读出了---

测试:

matlab: data=[1,2,3,4,5,6,7,8,9]; createxml(’ test',data)

opencv:

CvMat* testmat=(CvMat*)cvLoad("test.xml");

for (int i=0;i<3;i++)

{

for (int j=0;j<3;j++)

{

cout<

}

cout<

}

显示结果:

b51fd26a5c0c810e1097d315f46dc57c.png

最后修改于 2012-10-17 16:31

阅读(?)评论(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值