【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调用函数
范数就是长度的一种推广形式,数学语言叫一种度量.比如有一个平面向量,有两个分量来描述:横坐标和纵坐标.向量的二范数就是欧几里得意义下的这个向量的长度.还有一些诸如极大值范数,就是横坐标或者纵坐标的最大 ...
随机推荐
- RAC 移动 OCR
1.查看是否有OCR备份 # ocrconfig -showbackup 如果没有就备份一份 # ocrconfig -export /oracle/bak/ocr/ocr_11291433_exp. ...
- 如何将根文件系统制作成yaffs格式,并设置从yaffs启动
1.利用mkyaffs2image 工具,将根文件系统打包成yaffs镜像包 mkyaffs2image-128M root_qtopia root_qtopia.img 2.设置uboot参数boo ...
- java static 关键字
static 修饰成员函数:(静态函数) 1)静态函数可以用类名和对象进行调用. 2)直接访问静态成员,但不能访问非静态成员变量. 3)非静态函数可以直接访问静态与非静态的成员.(非静态函数只能由对象 ...
- laravel实现第三方登录
https://github.com/laravel/socialite 这是官方的第三方登录包,支持很多国外的第三方登录 https://github.com/overtrue/socialite ...
- 修复iPhone的safari浏览器上submit按钮圆角bug
今天在公司写了一个登录页面效果,让我碰到一个怪异的问题——"表单中的input type=submit和input type=reset按钮在iPhone的safari浏览器下圆角有一个bu ...
- jmeter 建立一个扩展LDAP测试计划
添加用户 第一步你想做的每一个JMeter测试计划是添加一个线程组元素. 线程组告诉JMeter的用户数量你想模拟,用户应该发送的次数 请求,他们应该发送的请求的数量. 继续添加 线程组 首先选择元素 ...
- Windows下Git的安装及配置
Git的BASH Git的为Windows提供了用于命令行运行的一个仿真BASH的Git.习惯LINUX和UNIX环境的你,可以在该BASH环境中输入“git”命令来完成各种版本控制的操作. 简介 G ...
- [saiku] 连接 mondrain 数据源出错-空指针错误
我的个亲娘,这个问题查半天终于查出来了. 一开始以为是配置的mysql的location连接有问题,各种修改啊各种尝试,还是不行. 好死不死报了空指针错误,让人无法下手. 后来发现是这样子的: 生成s ...
- css--block formatting context
block formatting context(块级格式化上下文) 如何产生BFC:当一个HTML元素满足下面条件的任何一点,都可以产生Block Formatting Context: float ...
- python中的类变量、实例变量
类变量,是各个实例共享的资源,就像中央空调,只有一个,但每个房间(实例)均可享用. 实例变量,是每个实例各自分配使用的变量,每个房间(实例)都有一台空调,供自己使用. class handle(obj ...