正常情况下,编写好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. mybatis动态sql中的trim标签的使用

    trim标记是一个格式化的标记,可以完成set或者是where标记的功能,如下代码: 1. select * from user <trim prefix="WHERE" p ...

  2. Spring MVC 之输入验证(六)

    Spring MVC 验证主要还是用的是hibernate的验证.so需要添加以下的jar包: 1. hibernate-validator-5.2.2.Final.jar 2.hibernate-v ...

  3. c#动态创建ODBC数据源

    使用C#有两种方法可以动态的创建ODBC数据源,这里我用比较常用的SQL2000作为例子. 方法1:直接操作注册表,需要引用Microsoft.Win32命名空间 /// <summary> ...

  4. SlideSwitch

    //SlideSwitch.java package com.example.hellojni; import android.content.Context; import android.cont ...

  5. Bash脚本15分钟进阶教程

    转载: Bash脚本15分钟进阶教程 这里的技术技巧最初是来自谷歌的"Testing on the Toilet" (TOTT).这里是一个修订和扩增版本. 脚本安全 我的所有ba ...

  6. Epplus使用教程1(基本介绍)

    1.前言 目前Epplus的介绍中文资料很少,我也一直在摸索中使用它,以下是我在使用过程中得到的经验,写出来供大家参考.本系列共4章: 导出Excel之Epplus使用教程1(基本介绍) 导出Exce ...

  7. python 练习 22

    Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false. Python 编程中 if 语句用于控制程序的执行,基本形式为: if 判断条件: 执行语句…… el ...

  8. 谈谈JPA-03-基本注解

    @Entity @Entity 标注用于实体类声明语句之前,指出该Java 类为实体类,将映射到指定的数据库表.如声明一个实体类 Customer,它将映射到数据库中的 customer 表上. @T ...

  9. python常见的模块

    Python内置模块名称 功能简介 详细解释/使用示例 os 和操作系统相关 os.path — Common pathname manipulations sys 和系统相关 sys — Syste ...

  10. jdk版本比较

    JDK各个版本的新特性 对于很多刚接触java语言的初学者来说,要了解一门语言,最好的方式就是要能从基础的版本进行了解,升级的过程,以及升级的新特性,这样才能循序渐进的学好一门语言.今天先为大家介绍一 ...