Other - visual studio和MATLAB下opencv配置(转)
为了解决visual studio下opencv的重复性配置,在此提供一种简单的方法。
第一步:首先下载opencv,可以看到里面有两个文件夹。

第二步:将opencv的目录添加到系统变量。计算机——右键——属性——高级系统设置——环境变量,将路径D:\opencv\build\x86\vc10\bin添加进系统变量Path变量中(多个变量值用分号隔开)。切记选择X86,否则据说容易出错(未验证),此外注意对应的版本号,vs2010选vc10,vs2012选vc11,vs2013选vc12.
第三步:打开visual studio,我用的是vs2010,新建控制台项目,在菜单栏中选择视图-->属性管理器,右击 Debug|Win32,选择“添加新项目属性表”,我在此建立了opencv_debug,如下图所示。
双击opencv_debug,在vc++目录下添加可执行文件目录D:\opencv\build\x86\vc10\bin;包含目录D:\opencv\build\include;D:\opencv\build\include\opencv;D:\opencv\build\include\opencv2;库目录D:\opencv\build\x86\vc10\lib。
在链接器-输入中附加依赖项(D:\opencv\build\x86\vc10\lib)
opencv_imgproc249d.lib
opencv_calib3d249d.lib
opencv_contrib249d.lib
opencv_core249d.lib
opencv_features2d249d.lib
opencv_flann249d.lib
opencv_gpu249d.lib
opencv_highgui249d.lib
opencv_legacy249d.lib
opencv_ml249d.lib
opencv_nonfree249d.lib
opencv_objdetect249d.lib
opencv_ocl249d.lib
opencv_photo249d.lib
opencv_stitching249d.lib
opencv_superres249d.lib
opencv_ts249d.lib
opencv_video249d.lib
opencv_videostab249d.lib
注意版本号,我用的是vc10.至此,opencv_debug配置基本结束,opencv_release配置基本相同,把附加依赖项lib文件的*d.lib中的d全部去掉。
在源文件新建test.cpp,输入下列代码测试:
#include <cv.h>
#include <highgui.h>
using namespace std;
int main()
{
IplImage * test;
test = cvLoadImage("D:\\dog.jpg");//图片路径
cvNamedWindow("test_demo", 1);
cvShowImage("test_demo", test);
cvWaitKey(0);
cvDestroyWindow("test_demo");
cvReleaseImage(&test);
return 0;
}
以后创建新的OpenCV项目是只需要把opencv_debug和opencv_release这两个属性页添加到项目就可以了.
下面是MATLAB的opencv配置:
1.在MATLAB中先输入mex -setup查找需要的编译器,我这里是vs2010,然后输入mex -v查看配置文件的位置,即mexopts.bat的位置。
2.用记事本打开mexopts.bat,在set MATLAB=%MATLAB%下面添加set OPENCVDIR=D:\opencv\build (填写你自己opencv的安装位置),在PATH= 后面添加
%OPENCVDIR%\x64\vc10\bin;在INCLUDE= 后面添加%OPENCVDIR%\include;%OPENCVDIR%\include\opencv;%OPENCVDIR%\include\opencv2;在LIB= 后面
添加%OPENCVDIR%\x64\vc10\lib;在LINKFLAGS=/dll /export:%ENTRYPOINT% /LIBPATH:"%LIBLOC%" 后面添加附加依赖项(与vs依赖项一样),
opencv_imgproc249d.lib opencv_calib3d249d.lib opencv_contrib249d.lib opencv_core249d.lib opencv_features2d249d.lib opencv_flann249d.lib opencv_gpu249d.lib opencv_highgui249d.lib opencv_legacy249d.lib opencv_ml249d.lib opencv_nonfree249d.lib opencv_objdetect249d.lib opencv_ocl249d.lib opencv_photo249d.lib opencv_stitching249d.lib opencv_superres249d.lib opencv_ts249d.lib opencv_video249d.lib opencv_videostab249d.lib
3.将路径D:\opencv\build\x64\vc10\bin添加进环境变量系统变量Path变量中。
附:
1.MATLAB版本不要太高,高版本没有mexopts.bat文件。
2.VS版本不要太高,我测试过在VS2013下MATLAB2012识别不出。
3.MATLAB配置操作流程1就操作一次,重复操作会重置mexopts.bat。
4.我是先安装的VS后安装的MATLAB,安装顺序也许会有影响。(未验证)
以下是MATLAB的测试过程:
在matlab当前目录下建立cpp文件(简单方法,txt改后缀为cpp),vs打开敲入代码,代码需要
是Matlab的C语言接口风格,函数内部调用OpenCV函数演示功能,简化后的代码:程序命名为
useOpenCV.cpp保存。
#include"mex.h"
#include "cv.h"
#include "highgui.h"
void mexFunction (int nlhs, mxArray *plhs[], // 输出参数个数,及输出参数数组
int nrhs, const mxArray *prhs[]) // 输入参数个数,及输入参数数组
{
char name[256];
int buflens =mxGetNumberOfElements(prhs[0]);
mxGetString(prhs[0], name, buflens+1);
if(!mxIsChar(prhs[0]))
{
mexErrMsgTxt("First parameter must be string/n");
}
mexPrintf(name);
IplImage * img = cvLoadImage(name, 1);
if(img->imageData == NULL)
{
mexErrMsgTxt("Error in image/n");
}
cvNamedWindow("1",1);
//imshow("1",mat);
cvShowImage("1",img);
cvWaitKey(0);
return;
}
在matlab里输入 mex useOpenCV.cpp编译。
在matlab里输入命令调用编译好的文件:useOpenCV(‘lena.bmp’);即可调用。

浙公网安备 33010602011771号