【kate总结】matlab调用opencv总结
正常情况下,编写好matlab调用opencv的代码。
1.输入 MEX XX.CPP(所有的mex都要编译)

2.将生成的.mexw64 放到要调用的文件夹下即可
出错总结:
本人写的matlab调用opencv的代码:
本代码路径:D:\visual studio demo\Rect2
1.配置:严格按照之前配置的文章进行配置
2.编译
3运行

运行时提示错误,代码本身没有问题。但是在matlab中编译生成的mexw64 调用时会出现如上错误,原因未知。 现解决办法如下。
代码的功能:matlab传入一组数组 ,利用groupRectangles(dst, 1, 0.2);进行窗口融合。再将融合的数组传到matlab
//矩阵的传入与传出
//20151021矩阵[1 3 50 100;3 5 50 100;5 7 50 100;7 9 50 100;9 11 50 100]出错,得进行调试
//opencv 的结果为[5 7 50 100]
//[2 4 50 100;4 6 50 100;6 6 50 100;8 10 50 100;10 12 50 100] 结果 6 8 50 100 #include "mex.h"
#include <iostream>
#include <vector>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){
//输入,输入进来的矩阵一定是n×4,不能为空
double *inMatrix;
inMatrix = mxGetPr(prhs[]); //得到输入矩阵的第一个元素的指针
int mrows = mxGetM(prhs[]); //获得矩阵的行
int ncols = mxGetN(prhs[]); //获得矩阵的列, vector<Rect> dst;
dst.clear();
Rect tempt;
int dst_size;
printf("%d_%d\n", mrows, ncols); //打印行和列 for(int i = ; i < mrows; i++)
{
tempt.x=inMatrix [ * mrows + i];//[当前列*行数+当前行]
tempt.y=inMatrix [* mrows + i];
tempt.width=inMatrix [* mrows + i];
tempt.height=inMatrix [ * mrows + i];
dst.push_back(tempt);
}
// printf("oriSize: %d\n",dst.size());
//cout<<"oriSize:"<<dst.size()<<endl;
groupRectangles(dst, , 0.2);
dst_size=dst.size();//当前行数
printf("curSize: %d\n",dst.size());
//cout<<"curSize:"<<dst_size<<endl; //输出
plhs[] = mxCreateDoubleMatrix(dst_size,, mxREAL); //输出,每一列为一个窗口,行数=维数,列数=窗口数
double *outMatrix;
outMatrix = mxGetPr(plhs[]);
for(int i = ; i < dst_size; i++)
{
outMatrix[*dst_size+i ]=dst[i].x;
outMatrix[*dst_size+i ]=dst[i].y;
outMatrix[*dst_size+i ]=dst[i].width;
outMatrix[*dst_size+i ]=dst[i].height;
} }
解决步骤:
一.在opencv中新建一个



二、属性配置
右键属性




3.在test.def中输入
LIBRARY test
EXPORTS mexFunction

在vs2010中 生成。
在matlab打开工程名.X64.DEBUG
输入命令mex name.obj
复制mexw.64 和 工程底下的.CPP文件到需要的matlab文件夹中即可

备注:
生成,就是将项目文件编译成可执行文件等运行时必须的文件。
生成解决方案,就是将该解决方案里所有项目进行编译,生成文件,与生成的功能类似。
开始执行(不调试),就是只执行,不进行调试,就像执行可执行文件一样,不会进入断点调试。
将运行得到的结果 .mexw64 即可执行文件放到要运行的matlab底下即可 。


【kate总结】matlab调用opencv总结的更多相关文章
- matlab调用opencv函数的配置
环境: VS2010 活动解决方案平台x64 WIN 8.1 Opencv 2.4.3 Matlab 2012a 1. 首先保证vs2010能正确调用opencv函数, 2. Matlab中选择编 ...
- [转] matlab调用opencv函数的配置
原文地址百度账户 aleasa123 方式1 1. 首先保证vs2010能正确调用opencv函数, 2. Matlab中选择编译器,操作如下: 打开matlab2012,输入mex –setup ...
- matlab和C/C++混合编程--调用opencv
最近的我们已经将整个项目搭起来了,项目比较复杂.由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然 ...
- Atitit 图像处理 调用opencv 通过java api attilax总结
Atitit 图像处理 调用opencv 通过java api attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...
- Lua 调用 Opencv 的方法
Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lu ...
- MATLAB调用C程序、调试和LDPC译码
MATLAB是一个很好用的工具.利用MATLAB脚本进行科学计算也特别方便快捷.但是代码存在较多循环时,MATLAB运行速度极慢.如果不想放弃MATLAB中大量方便使用的库,又希望代码能迅速快捷的运行 ...
- C#调用opencv
最经做一个项目,底层调用openCV编写的图像处理程序,用户界面采用C#编写. 于是学习了相关技术,总结如下: C#编写的是托管代码,编译生成微软中间语言,而普通C++代码则编译生成本地机器码,这两种 ...
- csharp通过dll调用opencv函数,图片作为参数
[blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数 一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...
- 向量和矩阵的范数及MATLAB调用函数
范数就是长度的一种推广形式,数学语言叫一种度量.比如有一个平面向量,有两个分量来描述:横坐标和纵坐标.向量的二范数就是欧几里得意义下的这个向量的长度.还有一些诸如极大值范数,就是横坐标或者纵坐标的最大 ...
随机推荐
- hiho_1138_island_travel
题目 二维平面上有n个点,每个点的横纵坐标均为非负整数.两个点之间的距离记为 min(abs(x1 - x2), abs(y1 - y2)),求从点1到达点n的最短路径长度. 比较容易想到使用最短路径 ...
- windows下重新安装TCP/IP协议栈
一.windows重装TCP/IP协议 前两天在windows下安装开发环境的时候,把系统的TCP/IP协议栈给搞跪了,导致系统无法ping localhost.无法在程序中创建socket等 ...
- window下安装nodejs
下载nodejs 去https://nodejs.org/en/download/下载nodejs,有.mis(安装版)和.exe(二进制版) .mis(安装版) 一般下载这个就行,简单方便,自带np ...
- dx中纹理相关的接口备注
1.内存中的纹理保存到文件 HRESULT D3DXSaveTextureToFile( __in LPCTSTR pDestFile, __in D3DXIMAGE_FILEFORMAT DestF ...
- linux笔记:文件编辑器vim
vim的3种工作模式: 在命令模式下进入插入模式: 定位命令: 删除命令: 复制和剪切命令: 替换和取消命令: 查找和替换命令: 保存和退出命令: 导入命令执行结果和定义快捷键:
- linux笔记:linux常用命令-帮助命令
帮助命令:man(获得帮助信息) 帮助命令:help(获得shell内置命令的帮助信息)
- Java中this、super用法
这节我们主要是区分this 和 super这两个关键字的用法 起初我根本弄不清楚this 和 super这两个关键字的用法,也不明白在代码实例中为什么既用this又用super,下面就是原因: 1. ...
- php面向对象Object
1.创建类 class 类名{ private 私有变量 只能本类的内部使用 protected 受保护的变量 本类和子类的内部 public 公开的变量 都可以使用 一般属性都设为私有 一般函数都是 ...
- [redis] windwos下安装和使用redis
一篇很好的入门学习文章:Redis学习 Redis是一种nosql数据库,在开发中常用做缓存. 1.下载地址: 低版本下载地址:https://github.com/dmajkic/redis/dow ...
- struts2配置通用action一个顶N个,你还在写一大堆action吗?
<!-- 通用action!!!约定优于配置 --> <action name="*_*" class="cn.cnsdhzzl.action.{1}A ...