Opencv中的Mat文件在matlab打开
2017-06-06 19:57
141 查看
本文感觉绕了一圈,但是不写下来不开心
1.先vs中将要保存的Mat保存为xml
详细链接// in c++ FileStorage fs_xy0("xy0.xml", FileStorage::WRITE); // xy0.xml 是 保存的文件 fs_xy0 << "prob_idx" << xy[0]; // 将 Mat xy 重定向到 xy0中 fs_xy0.release();
2. matlab 中
下载xml2struct下载链接
原因,matlab自带的 xmlread,反正我的版本看不了介绍。工作区(看变量值的地方)也打不开,也看不了变量值。上面这个函数,把xml打开成一个struct。
从struct读取数据
clear; x = xml2struct( 'xy0.xml' ); x_str = x.opencv_storage.prob_idx.data.Text; % 这里是反人类的部分 % x_str是一个字符串,也就是一个m_by_1的char变量 % str2double | str2num 可能没法读取z % 因为z的格式没按要求存取 z=strsplit(x_str); % 按空格划分成cell for i = 1: length(z); cao(i)=str2double(cell2mat(z(i))); end %反人类的操作,每个cell %转成mat,在转成double %cellfun(@str2num, cell) cao(1) = []; % 第一个数据是空的,删除。看个人情况 pic = reshape(cao, str2num(x.opencv_storage.prob_idx.rows.Text), str2num(x.opencv_storage.prob_idx.cols.Text)); % 将data按 row,col reshape
上文总结:
字符串 != char数组 在matlab中。
‘hello everybody’是个字符串,[‘hello’ ‘everybody’] 是一个2x1的char数组
str2num不能将不合格式的字符串转成double数组,需要另外改成可以操作的数据
忧伤,想把opencv里的simpleflow用在matlab上。把flow(像素偏移)这个cv::mat保存为xml,然后用matlab打开。 :( 打开了,还不如原来的siftflow,虽然没有调参数。
感觉绕路了,opencv好像可以在matlab打开。实在不行还有mex。
相关文章推荐
- 在matlab中打开mat文件
- opencv读matlab中.mat文件
- opencv打开matlab保存的txt文件,并赋值为Mat矩阵
- opencv读matlab中.mat文件
- C++读写matlab的mat文件 结合opencv Mat结构测试
- matlab 的.mat文件 转化为 opencv可读的.yml文件
- Qt+opencv+matlab opencv读写高光谱 .mat文件
- MATLAB的M文件、MEX文件、MAT文件是什么 .如何打开(直接鼠标拖入相应区域)
- Why OpenCV is slower than Matlab in matrix related operation,如:特征值分解,奇异值分解
- Matlab与C++混合编程(依赖OpenCV)
- VS2015中Qt5.7和OpenCV2.4.10配合打开图片和视频
- opencv结合MFC打开图片
- 【MATLAB】多个mat文件合成一个mat文件
- [转] Matlab与C++混合编程(依赖OpenCV)
- opencv中 Error 无法打开源文件“cv.h”
- 请问,这样的错误该怎么处理,按照网上的配置好了,可是一直不成功,LINK : fatal error LNK1104: 无法打开文件“opencv_world331.lib”请问,这样的错误该怎么处理
- Qt-Matlab-Opencv配置小记
- 基于MATLAB和opencv的单目摄像机标定
- matlab中关于读取.mat文件中的奇偶行数据问题
- OpenCV保存的xml矩阵转换为MATLAB矩阵