资源描述:
《matlab+opencv混合编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、部分转载已说明来源。原文地址:http://blog.csdn.net/zouxy09/article/details/20553007另一篇:http://www.cnblogs.com/lukylu/p/3966871.html本人环境:matlab2013+VS2010+opencv2.4.9首先:matlab中输入 mex-setup选择编译环境(我选的vs2010)接下来测试一个matlab+c的混编程序.(下面的例子是实现a+b)保存为.c或.cpp文件。我保存的是cvMexAdd.cpp#include"mex.h"
doubleadd(doublex,double
2、y)
{
returnx*y;
}
//标准函数定义是:voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[])
//可以根据自己的喜欢修改变量名
/*
*nargout:输出变量数
*arrayout:输出数组指针
*nargin:输入变量数
*arrayin:输入数组指针
*/
voidmexFunction(intnargout,mxArray*arrayout[],intnargin,constmxArray*arrayin[])
{
if(nargin!=2)//输入参数。(最好不要在编程的时
3、候用中文,这里为了方便观察)
{
mexPrintf("输入参数要有2个.");
return;
}
double*a;
doubleb=1.0,c=2.0;
arrayout[0]=mxCreateDoubleMatrix(1,1,mxREAL);
a=mxGetPr(arrayout[0]);
b=*(mxGetPr(arrayin[0]));
c=*(mxGetPr(arrayin[1]));
*a=add(b,c);
}然后在matlab中输入 mexcvMexAdd.cpp最后cvMexAdd(1,2)测试一下接下来的怎么结合matlab+opencv就简单了。假如m
4、atlab中已经写好了一个opencv的cpp程序如下:功能是实现一张图片转换成灰度图.我保存的名称是:cvRGB2Gray.cpp//Interface:convertanimagetograyandreturntoMatlab
//Author:zouxy
//Date:2014-03-05
//HomePage:http://blog.csdn.net/zouxy09
//Email:zouxy09@qq.com
#include"opencv2opencv.hpp"
#include"mex.h"
usingnamespacecv;
/***************
5、****************************************
Usage:[imageMatrix]=RGB2Gray('imageFile.jpeg');
Input:
aimagefile
OutPut:
amatrixofimagewhichcanbereadbyMatlab
**********************************************************/
voidexit_with_help()
{
mexPrintf(
"Usage:[imageMatrix]=DenseTrack('imageFile.jpg
6、');"
);
}
staticvoidfake_answer(mxArray*plhs[])
{
plhs[0]=mxCreateDoubleMatrix(0,0,mxREAL);
}
voidRGB2Gray(char*filename,mxArray*plhs[])
{
mexPrintf("Hello3!");
//readtheimage
Matimage=imread(filename);
if(image.empty()){
mexPrintf("can'topeninputfile%s",filename);
fake_answer(plhs);
r
7、eturn;
}
//convertittograyformat
Matgray;
if(image.channels()==3)
cvtColor(image,gray,CV_RGB2GRAY);
else
image.copyTo(gray);
imshow("gray",gray);
//converttheresulttoMatlab-supportedformatforreturning
introws=gray.rows;
intcols=gray.co