Visual Studio+OpenCV3.2+CMake编译;Matlab+mexopencv混编

来源:互联网 发布:我的世界服务器端编程 编辑:程序博客网 时间:2024/05/17 23:35

软件Visual Studio 2015;Matlab 2015b;OpenCV3.2;OpenCV_contrib;mexopencv;CMake

OpenCV3.2: http://opencv.org/opencv-3-2.html

CMake3.8.0win x64版(32位系统下win x86版):https://cmake.org/download/

OpenCV_contrib:https://github.com/opencv/opencv_contrib;

一、编译opencv3.2

首先打开CMake

在 where is the source code处找到opencv3.2文件夹下的source目录;

在 where to build the binaries:处填写自己要把编译好的opencv文件放置的文件夹;


然后点击下方的Configure

此时弹出对话框,选择编译器:


可以选择他默认的编译器(即Visual Studio 14 2015 Win64),也可以选则Specify native compilers;如果选该选项,后面要填写本地visual studio的编译器,这里为了简单,就选择默认的Visual Studio 14 2015 Win64编译器。点击Finish。


其中将build_docs(该选项会生成opencv的documentation文件,这个可以在网上查,需要的话可以添加),Build_Example(这个是生成一些例子)取消,

在OpenCV_Extral_Modules_Path里面填写OpenCV_Extral的路径,填写到modules文件夹下。


当电脑上装了matlab的时候,cmake自动搜索到matlab相关文件的路径,有了这个应该可以进行下一步的matlab混编。还有像BUILD_opencv_world和BUILD_opencv_contrib_world这两项不要选,默认是不选的。




然后点击configure,点击完configure后,红色区域表示改变的东西或者是有问题的区域,因为刚刚添加了opencv_extral_modules_path,所以在Build区域生成的文件会有改变,这时如果对变动的内容没有问题,再点击configure。在下面的生成文字中有生成的OpenCV的库;

OpenCV modules:

To be built: core flann imgproc ml photo reg surface_matching video dnn fuzzy imgcodecs shape videoio highgui objdetect plot superres ts xobjdetect xphoto bgsegm bioinspired dpm face features2d line_descriptor saliency text calib3d ccalib datasets rgbd stereo tracking videostab xfeatures2d ximgproc aruco optflow phase_unwrapping stitching structured_light matlab

Disabled: world contrib_world

Disabled by dependency: -

Unavailable: cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev java python2 python3 viz cnn_3dobj cvv freetype hdf sfm


其中To be built 是可以生成的库文件,该库中如果有matlab,表示可以用mexopencv进行编译;Disabled和Unavailable是无法生成的库,其中cuda开头的库是可以GPU加速的库文件;

如果没问题后点击Generate,生成Visual Studio的sln工程文件。

在目标路径下找到OpenCV.sln工程,用Visual Studio打开该工程,该工程下有很多子工程,找到ALL_BUILD项目和INSTALL项目,在Debug模式下,生成ALL_BUILD,成功后,生成INSTALL;在Release模式下,生成ALL_BUILD,成功后,生成INSTALL。

二、使用mexopencv编译OpenCVC++函数

编译好OpenCV3.2后,下载mexopencv文件,打开matlab,将mexopencv文件夹添加到目录里,有两种方式:

1)在命令窗口中addPath

2)在matlab current folder中右键mexopencv文件夹,选择addPath中selected folder and subfolders选项。

在matlab命令行中首先输入mex -setup打开Visual C++编译器。

然后输入mexopencv.make('clean',true),清理之前的文件

输入mexopencv.make('opencv_path','D:\OpenCV3.2', 'opencv_contrib',true);   这个mexopencv.make函数第一个参数为字符串,即'opencv_path';第二行为OpenCV文件夹目录,该目录下包含include,x64(x64中包含lib和bin文件夹),如下图,第三个参数是编译有contrib部分的opencv。


编译完成后,会显示成功,然后告知bin文件夹下的动态链接库需要放到windows 环境变量中。所以在windows环境变量中的Path项里添加动态链接库,

例如:D:\OpenCV3.2\x64\bin。

添加完成后需要将编译好的opencv函数放到matlab的toolbox中去,方便以后使用。

在D:\Program Files\MATLAB\R2015b\toolbox目录下建立文件夹,名字自拟,这里用OpenCV3.2

然后将编译好的mexopencv里的内容考入OpenCV3.2中


然后再matlab中添加该目录作为永久工具包,添加方法为

打开Home中的SetPath文件夹



为了简单化,选择 Add with Subfolders


然后保存。

然后打开preference



然后在Matlab,General中点击Update Toolbox Path Cache,点击应用,如下图。



然后重启matlab,就可以直接使用opencv函数了。

在编译好的mexopencv包中有+cv文件夹,该文件夹下包含着opencv很多函数,其中以m文件是函数的使用说明文件(该文件内容可以用help或者doc 加函数名显示出来,方面使用者学习),mexw64文件是对应的函数。同样,在opencv_contrib文件夹下的+cv文件也一样。可以用sample文件夹下的例子运行,判断是否编译成功。编译opencv的函数可以使用cv.xxx方式调用,例如cv.imread,cv.cvtColor,   其中cv.imread区别matlab中image processing工具包的imread函数。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

将visual studio2015 编译opencv加 matlab 2015b混编  放到其他matlab版本上运行会出现问题,但是可以用已经编好的pencv3.2在其他版本的matlab以及用非visual studio2015的编译器(即其他版本的编译器)编译。






0 0
原创粉丝点击