正常情况下,编写好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总结的更多相关文章

  1. matlab调用opencv函数的配置

    环境: VS2010 活动解决方案平台x64 WIN 8.1 Opencv 2.4.3 Matlab 2012a 1.  首先保证vs2010能正确调用opencv函数, 2.  Matlab中选择编 ...

  2. [转] matlab调用opencv函数的配置

    原文地址百度账户 aleasa123 方式1 1.  首先保证vs2010能正确调用opencv函数, 2.  Matlab中选择编译器,操作如下: 打开matlab2012,输入mex –setup ...

  3. matlab和C/C++混合编程--调用opencv

    最近的我们已经将整个项目搭起来了,项目比较复杂.由于我们做的是检索系统,所以我们用asp.net(c#)做了网页,但是算法的实现是在matlab下,所以我们不得不用matlab生成动态链接库dll,然 ...

  4. Atitit 图像处理 调用opencv 通过java  api   attilax总结

    Atitit 图像处理 调用opencv 通过java  api   attilax总结 1.1. Opencv java api的支持 opencv2.4.2 就有了对java api的支持1 1. ...

  5. Lua 调用 Opencv 的方法

    Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lu ...

  6. MATLAB调用C程序、调试和LDPC译码

    MATLAB是一个很好用的工具.利用MATLAB脚本进行科学计算也特别方便快捷.但是代码存在较多循环时,MATLAB运行速度极慢.如果不想放弃MATLAB中大量方便使用的库,又希望代码能迅速快捷的运行 ...

  7. C#调用opencv

    最经做一个项目,底层调用openCV编写的图像处理程序,用户界面采用C#编写. 于是学习了相关技术,总结如下: C#编写的是托管代码,编译生成微软中间语言,而普通C++代码则编译生成本地机器码,这两种 ...

  8. csharp通过dll调用opencv函数,图片作为参数

    [blog 项目实战派]csharp通过dll调用opencv函数,图片作为参数          ​一直想做着方面的研究,但是因为这个方面的知识过于小众,也是由于自己找资料的能力比较弱,知道今天才找 ...

  9. 向量和矩阵的范数及MATLAB调用函数

    范数就是长度的一种推广形式,数学语言叫一种度量.比如有一个平面向量,有两个分量来描述:横坐标和纵坐标.向量的二范数就是欧几里得意义下的这个向量的长度.还有一些诸如极大值范数,就是横坐标或者纵坐标的最大 ...

随机推荐

  1. hiho_1062_最近公共祖先

    题目大意 给出一棵家谱树,树中的节点都有一个名字,保证每个名字都是唯一的,然后进行若干次查询,找出两个名字的最近公共祖先. 分析 数据量较小,对于每次查询都进行如下操作: 先找出person1到达根节 ...

  2. samtools常用命令详解(转)

    转自:samtools常用命令详解 samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml samtools是一个用于操作sam和ba ...

  3. 【bzoj1047】理想的正方形

    [bzoj1047]理想的正方形 题意 给定\(a*b\)由整数组成的矩形. 现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值 的差最小. \(1\leq a,b\leq 10 ...

  4. 关于http响应内容压缩的一点小积累。

    1.在tomcat的server.xml配置文件中,添加上背景颜色为绿色的配置,服务器就会自动压缩 <Connector port="80" maxHttpHeaderSiz ...

  5. 20145218 《Java程序设计》第9周学习总结

    20145218 <Java程序设计>第9周学习总结 教材学习内容总结 16.1.1 JDBC简介 JDBC全名Java DataBase Connectivity,是java联机数据库的 ...

  6. 20145218 《Java程序设计》第五周学习总结

    20145218 <Java程序设计>第五周学习总结 教材学习内容总结 异常 程序中总有些意想不到的状况所引发的错误,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失 ...

  7. postgresql 视图

    一.创建视图 create or replace view vw_users as select * from users; 二.通过定义规则来更新视图 create rule vw_users_up ...

  8. C#压缩加密和vb压缩加密

    string[] FileProperties = new string[2]; FileProperties[0] = "C:\\a\\";//待压缩文件目录 FilePrope ...

  9. mysql知识初篇(一)

    mysql介绍 (1) mysql数据库是瑞典AB开发. (2) mysql--> sun --> oracle. (3) mysql数据库的特点. 1. 开源. 2. 免费. 3. 跨平 ...

  10. hdu----(1677)Nested Dolls(DP/LIS(二维))

    Nested Dolls Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...