博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用VS2010调用matlab的mat格式文件
阅读量:6869 次
发布时间:2019-06-26

本文共 2247 字,大约阅读时间需要 7 分钟。

 

做实验需要将matlab实现的meanshift的结果中的region的Iabels矩阵,需要把labels.mat读入VS2010中,实现功能,在此把实现过程记录下来。

C++读取mat文件的步骤如下。

 

1. vs2010的配置

新建一个工程,在属性管理器中选择 工程->属性->VC++目录。

设置包含目录为:D:\MATLAB\R2010a\extern\include(我的matlab装在D盘);

设置库目录为:D:\MATLAB\R2010a\extern\lib\win32\microsoft。

2.设置环境变量path

计算机->属性->高级系统设置->高级->环境变量

在Path中已经存在D:\MATLAB_2011a\R2011a\bin\,但是D:\MATLAB_2011a\R2011a\bin\win32下有个重要的libmat.dll。如果不把d:\MATLAB\R2010a\bin\改为D:\MATLAB_2011a\R2011a\bin\win32程序将无法运行。

理论上D:\MATLAB_2011a\R2011a\bin\应该会向深一步检索到libmat.dll。坑爹的windows这一步并没有去做。这步设置完后要重启(环境配置完毕)。

 

3.使用MATLAB 提供的MAT 文件接口函数

    在C/C++程序中有两种方式可以读取MAT文件数据。利用MATLAB提供的有关MAT文件的编程接口函数。MATLAB的库函数中包含了MAT文件接口函数库,其中有各种对MAT文件进行读写的函数,都是以mat开头的函数。如表1所示。

表1  C语言中的MAT文件读写函数

MAT  函  数                          功    能

matOpen打开 MAT 文件

matClose关闭 MAT 文件

matGetDir从 MAT 文件中获得 MATLAB 阵列的列表

matGetFp获得一个指向MAT 文件的ANSI C 文件指针

matGetVariable从MAT文件中读取MATLAB阵列

matPutVariable写MATLAB阵列到MAT文件

matGetNextVariable从MAT文件中读取下一个MATLAB阵列

matDeleteVariable从MAT文件中删去下一个MATLAB阵列

matPutVariableAsGlobal从MATLAB阵列写入到MAT文件中

matGetVariableInfo从MAT文件中读取MATLAB阵列头信息

matGetNextVariableInfo从MAT文件中读取下一个MATLAB阵列头信息

 

4.程序举例

读取.mat文件,并把mat内容存储在图像中并显示。

注意:在Studio中一定要注意,默认读取.mat的方式是按列读取,不是按行读取。这是matlab数据存储的特色!

#include "stdafx.h"  int loadMat(Mat& regId)  {      MATFile *pmat;      const char **dir;      const char *file;      const char *name;      int         ndir;      mxArray *pa;      file="D:/labels3_ms.mat";//双反斜杠防止转义      pmat=matOpen(file, "r");//打开文件,返回指向文件指针    if (pmat == NULL) {         cout<<"Error opening file"<
<
int,int>regSize; int m=0; for (int r=0;r { int n=0; m++; uchar *id=regId.ptr(r); for (int c=0;c { id[c]=(*pm); pm++; regSize[*pm]++; } } cout<<"regSize:"<
<
first<<" size: "<
second<
//waitKey();      //imwrite("D:/regId1.jpg",regId);      //return 1;      return regSize.size();  }

 

 

 

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。
    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5928966.html,如需转载请自行联系原作者
你可能感兴趣的文章
常用算法思想之动态规划的后缀思想
查看>>
安卓单元测试 (十):DaggerMock, 让 Dagger2 与单元测试的结合易如反掌
查看>>
EventLoop
查看>>
css 技巧汇总
查看>>
细说 Angular 2+ 的表单(一):模板驱动型表单
查看>>
vue cli 框架搭建
查看>>
免信任型计算的扩容模型,Part-1
查看>>
伪装位置
查看>>
JVM垃圾回收算法有哪几些?
查看>>
CSS 属性篇(二):transform属性
查看>>
Go语言中的Interface
查看>>
谈谈Promise那点事(二)
查看>>
express+request实现-图夫在线爬取网页图片
查看>>
ES6:数组扩展
查看>>
关于同步的一点思考-下
查看>>
ADB原理,Wi-Fi连接,常用命令及拓展
查看>>
Python学习之网络编程
查看>>
Eclipse 如何快速修改工程名及包名
查看>>
spring cloud微服务分布式云架构 - Spring Cloud简介
查看>>
Android之哭笑不得的BUG--RelativeLayout设置的marginbottom失效,马萨卡..
查看>>