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’);即可调用。

posted @ 2017-11-16 18:49  Super_Jian  阅读(354)  评论(0)    收藏  举报