Maltab结合Opencv配置并进行编译

1)方法一:使用mex直接编译
在当前目录下新建Plus.cpp文件用text文本打开,里面添加代码:

#include "opencv2/opencv.hpp"
#include "mex.h"
double plus(double x, double y)
{
    return x + y;
}
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    double *a;
    double b, c;
    plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);
    a = mxGetPr(plhs[0]);
    b = *(mxGetPr(prhs[0]));
    c = *(mxGetPr(prhs[1]));
    *a = plus(b, c);
}

可以看出该代码调用了opencv,所以使用mex编译的时候要调用opencv的库,直接编译命令如下:

mex -O Plus.cpp -ID:\OpenCV\opencv\build\include -ID:\OpenCV\opencv\build\include\opencv -ID:\OpenCV\opencv\build\include\opencv2 -LD:\OpenCV\opencv\build\x86\vc10\lib -lopencv_highgui248 -lopencv_core248 -lopencv_imgproc248

命令解释:
-O(大写)表示优化编译。
-I表示告诉编译器去哪里找#include的文件也就是头文件。
-L表示告诉编译器去哪里找库文件
-l表示将用到的opencv_core248库文件链接起来注意后面没有.lib后缀。
当格式如:mex x1.cpp x2.cpp x3.cpp后面链接多个.cpp文件的时候,编译器会将他们联合到一起生成一个名为x1的文件。
运行完以后即可以看到生成了Plus.mexw64或者Plus.mexw32。
(2)方法二:直接配置Maltab的Options file文件
运行命令:mex -v
如下红色部分显示:

>> mex -v
-> Default options filename found in C:\Users\Long\AppData\Roaming\MathWorks\MATLAB\R2013a 
---------------------------------------------------------------- 
->    Options file           = C:\Users\Long\AppData\Roaming\MathWorks\MATLAB\R2013a\mexopts.bat 

鼠标选中红色部分(C:\Users\Long\AppData\Roaming\MathWorks\MATLAB\
R2013a\mexopts.bat)右键在matlab打开或者到该路径下用其他编辑器打开。添加如下代码:
这里写图片描述

同时在set LINKFLAGS后面添加:

opencv_calib3d248.lib opencv_contrib248.lib opencv_core248d.lib opencv_features2d248.lib opencv_flann248.lib opencv_gpu248.lib opencv_highgui248.lib opencv_imgproc248.lib opencv_legacy248.lib opencv_ml248.lib opencv_objdetect248.lib opencv_ts248.lib opencv_video248.lib

运行编译命令:mex Plus.cpp即可看到生成了Plus.mexw64或者Plus.mexw32。

你可能感兴趣的:(Opencv,Matlab图像处理,opencv,matlab)