C++与Matlab混合编程之:矩阵数据结构
项目需要将matlab代码写成C++,准备用opencv。opencv中矩阵的存储与matlab有所不同,应注意以下问题:
1、matlab中矩阵是按照列优先存储的。对于n0*n1*...*nn维的矩阵,具体存储方式是:(a0(0),a1(0),...,an(0)),(a0(1),a1(0),...an(0)), (a0(n0),a1(0),...an(0)),(a0(0),a1(1),a2(0),...an(0)),...(a0(0),a1(0),...,an(nn)).即先遍历a0,再遍历a1,a2,...,an.
2、opencv中矩阵的存储方式是行优先的,与matlab相反。
3、对于三维矩阵,在opencv中我常使用一个多通道的二维矩阵代替。如创建一个100*10*20的矩阵:
Mat a(100,10,CV_32SC(20));
也可以直接创建一个三维矩阵:
int sz[]={100,10,20};
Mat a(sz,CV_32S);
4、对于遍历矩阵的操作,尽量使矩阵元素在内存中连续。我常使用下面的方法遍历矩阵:
double *data=(double *)a.data;
for(int i=0;i<a.rows;++i){
for(int j=0;j<a.cols;++j){
*(data++)=........
}
}
5、矩阵的初始化
opencv新建一个矩阵后并不会自动初始化,如果需要初始化需要自行操作。opencv提供了setTo函数:
//初始化一个32通道的矩阵,第32通道初始化为1,其他通道初始化为0
Mat a(100,100,CV_32SC(32));
Vec<int,32>val;
val=0;
val[31]=1;
a.setTo(val);
C++与Matlab混合编程之:矩阵数据结构的更多相关文章
- C++混合编程之idlcpp教程Python篇(9)
上一篇在这 C++混合编程之idlcpp教程Python篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程PythonTutorial7中除了四个文件PythonTu ...
- C++混合编程之idlcpp教程Lua篇(9)
上一篇在这 C++混合编程之idlcpp教程Lua篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程LuaTutorial7中除了四个文件LuaTutorial7.c ...
- C++混合编程之idlcpp教程Python篇(8)
上一篇在这 C++混合编程之idlcpp教程Python篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial6中,同样加入了四个文件:Pyt ...
- C++混合编程之idlcpp教程Lua篇(8)
上一篇在这 C++混合编程之idlcpp教程Lua篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程LuaTutorial6中,同样加入了四个文件:LuaTutori ...
- C++混合编程之idlcpp教程Python篇(7)
上一篇在这 C++混合编程之idlcpp教程Python篇(6) 第一篇在这 C++混合编程之idlcpp教程(一) 与PythonTutorial4工程相似,工程PythonTutorial5中,同 ...
- C++混合编程之idlcpp教程Lua篇(7)
上一篇在这 C++混合编程之idlcpp教程Lua篇(6) 第一篇在这 C++混合编程之idlcpp教程(一) 与LuaTutorial4工程相似,工程LuaTutorial5中,同样加入了四个文件: ...
- C++混合编程之idlcpp教程Python篇(6)
上一篇在这 C++混合编程之idlcpp教程Python篇(5) 第一篇在这 C++混合编程之idlcpp教程(一) 工程PythonTutorial4中加入了四个文件:PythonTutorial4 ...
- C++混合编程之idlcpp教程Lua篇(6)
上一篇在这 C++混合编程之idlcpp教程Lua篇(5) 第一篇在这 C++混合编程之idlcpp教程(一) 工程LuaTutorial4中加入了四个文件:LuaTutorial4.cpp, Tut ...
- C++混合编程之idlcpp教程Python篇(5)
上一篇在这 C++混合编程之idlcpp教程Python篇(4) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial3中,同样加入了三个文件:Py ...
随机推荐
- C/C++ nullptr
nullptr 关键字表示空指针值. 空指针值可用于指明对象句柄.内部指针或本机指针类型不指向对象. 结合使用 nullptr 与托管代码或本机代码. 编译器为托管空指针值和本机空指针值发出相应但不同 ...
- JavaScript中的文档对象模型
1. DOM基本介绍1 什么是DOMDOM的英语全称为Document Object Model,翻译成中文就 是文档对象模型.也就是说,将整个文档看作是一个对象.而一个文档又是由很多节点组成的, 那 ...
- vs2017 Visual Studio 离线安装方法
转自:http://www.jb51.net/softjc/539858.html 第一部分:离线下载安装文件 这里描述是包括所有版本,截图以下载VS2017社区版为例: ①登入VS官网下载页面,选择 ...
- JavaScript编码指南
出其不意 1920年,William Strunk Jr的<英文写作指南>出版了,这本书给英语的风格定下了一个规范,而且已经沿用至今.代码其实也可以使用相似的方法加以改进. 本文接下来的部 ...
- “fixed+relative≈≈absolute”——对BFC的再次思考
好久没写博客了,刚好今天跨年夜没约到什么妹子,在家宅着不如写点东西好了. 需求 昨天晚上,给公司年会做一个移动端的投票页面,遇到一个UI优化的问题: · 正文内容少于一屏时,投票提交按钮固定显示在页面 ...
- OA系统和ERP系统的区别
一.OA和ERP的区别 1.含义不同: OA指Office Automation,中文简称自动办公系统,帮助企业内部管理沟通的工具,比如新闻公告.内部沟通.考勤.办公.员工请假.审批流程等. ERP指 ...
- springboot整合shiro的使用
shiro的原理已经有博客了,自己写可以问度娘 参考https://www.cnblogs.com/liyinfeng/p/8033869.html 此处直接描述实际使用 一.pom.xml引包 &l ...
- StringUtils工具
ppublic class StringUtils { private StringUtils() { } /** * 文本左边补零 * * @param maxLength 文本长度 * @para ...
- 2019-8-30-WPF-一个性能比较好的-gif-解析库
title author date CreateTime categories WPF 一个性能比较好的 gif 解析库 lindexi 2019-08-30 08:59:45 +0800 2018- ...
- 【珍惜时间】iReport
项目很点意思,感觉很高超的样子 先放下项目的github地址:https://github.com/tctangyanan/iReport 感谢各位伟大的程序员无私的分享自己的技术 老规矩,我们会运行 ...