VS+CMake+opencv3+opencv_contrib

版权声明:好好学习,天天向上 https://blog.csdn.net/m0_37870665/article/details/78063052

1、环境及准备

1) VisualStudio

2) CMake下载地址:https://cmake.org/download/ 

3) OpenCV下载地址:https://github.com/opencv/opencv/releases

4) OpenCV_contrib下载地址:https://github.com/opencv/opencv_contrib/releases 

注:本文用的版本是VS2015(也即VC14)、opencv-3.2.0源码、opencv_contrib-3.2.、cmake-3.5.2-win32-x86,opencv和opencv_contrib版本要一致

      也可以下载opencv-xxx.exe,双击后得到官方编译好的版本,可以直接进行vs配置,参考浅墨的博客http://blog.csdn.net/poem_qianmo/article/details/19809337,不过3.x.x.exe版本不包含contrib库,如果用到的话仍需自行编译


2、用CMake生成OpenCV的VS解决方案

(1) 点击  cmake-gui.exe,运行CMake; 
(2) 点击“Browse Source…”按钮选择源代码路径; 我们可以发现,此路径下有一个CMakeLists.txt文件,cmake可以根据这个配置文件,通过不同的编译器选择,来生成不同的解决方案,VisualStudio的编译器对应的就生成Visual Studio版的sln解决方案。
点击“Browse Build…”按钮选择生成路径:


扫描二维码关注公众号,回复: 4852917 查看本文章


(3) 第一次Configure,在弹出的对话框中选择生成项目版本和编译器:


然后,单击“finish”按钮,cmake开始第一次源代码配置过程。

如果网络不好的话可能有一些文件下载不下来,如:ippicv_windows_20151201.zip,解决办法是自行找资源放到对应位置;如果提示hash值不对,解决办法是找到对应文件并删除,重新configure。

看到进度条读到尽头,出现了Configuring done字样,第一次的源码配置就完成了。


(4) 在红色框中修改需要生成的项目及属性

看下是否找到你python的include等路径




如果需要编译opencv_contrib,则添加



上边是对应于编译动态链接库版本的,如果编译静态链接库版本,需要取消BUILD_SHARE_LIBS 
为了opencv最终生成的库打包成一个world,需要选择BUILD_opencv_world 



再次点击Configure,这次的配置是很快的,再次出现Configuring done字样,并且红色的选中部分都正常了。


(5) 点击Generate看到Generating done字样,就表示大功告成,可以去之前我们指定的目录下寻找我们生成的解决方案了。

注:我们生成的sln工程,只是连接到了opencv安装路径下的源文件而已,工程本身并不大。


3、编译源代码,生成我们所需要的动态链接库

(1) 双击生成目录下OpenCV.sln,打开解决方案;

(2) 编译生成Debug库:在解决方案资源管理器窗口中选择ALL_BUILD项目,右键进行“生成”


(3) 编译生成Release库:从Debug模式切换到Release再次对项目进行生成; 


其实我们编译OpenCV,就是得到了一些二进制的生成文件,如dll、lib、exe。

在debug下编译的,则在工程目录的bin\debug和lib\debug生成

在release下编译的,则在工程目录的bin\release和lib\release生成


(4) CMakeTargets工程中的INSTALL上右键选择Project Only->Build Only INSTALL


where to build the binaries中设置的路径下会多一个install文件夹,里面生成编译好的opencv文件,如下:


可以先关掉VS了~


4、配置Opencv环境变量 

对于32位系统,添加:{opencv编译生成目录}\install\x86\vc14\bin;如我的是E:\opencv-3.2.0\opencv-3.2.0\build\vc14\install\x86\vc14\bin;

对于64位系统,添加: { opencv编译生成目录}\install \x86\vc14\bin;{opencv编译生成目录}\install\x64\vc14\bin;


5、工程包含(include)目录的配置

<1>打开visual studio,新建win32控制台项目,取个名字,比如叫OpenCV_test,然后选好路径,点确定。

<2>点一次“下一步”。

<3>勾上空项目那个勾。

<4>接着在解决方案资源管理器的【源文件】处右击->添加->新建项,准备在工程中新建一个cpp源文件。

<5>选定C++源文件,取个名字,比如叫“displayImage.cpp”,然后点【添加】,那么,一个新的cpp文件就添加到了工程中。

<6>在属性管理器中进行一次配置,以后新建的工程就不用再额外的进行重新配置了。在菜单栏里面点<视图>--<属性管理器>,那么就会在visual            studio中多出一个属性管理器工作区来。


<7>在新出现的“属性管理器”工作区中,点击项目->Debug|Win32->Microsoft.Cpp.Win32.user(右键属性,或者双击)即可打开属性页面。

<8>打开属性页面后,就是一番配置了。

首先是在【通用属性】 ->【VC++目录】 ->【包含目录】中添加3个目录:



注意,如果用的exe版本且不自己编译的话,添加的include路径类似这样

$(opencv)\build\include;

$(opencv)\build\include\opencv;

$(opencv)\build\include\opencv2;


工程库(lib)目录的配置


【库目录】中添加:...\x86\vc14\lib;

同样,如果用exe版本且不自己编译的话,添加的lib路径类似这样$(opencv)\build\x86\vc14\lib;

这里提一点,不管是32位还是64位操作系统,配置选择什么跟64位还是32位系统没有直接的关系,而是在于你在编译你的程序的时候是使用那个编译器:

编译器选的是win32,就用x86;编译器选的是X64,就用X64。不过一般情况下,都是用的win32的X86编译器。


链接库的配置

选择【通用属性】 ->【链接器】->【输入】->【附加的依赖项】,添加:

opencv_aruco320d.lib

opencv_bgsegm320d.lib

opencv_bioinspired320d.lib

opencv_calib3d320d.lib

opencv_ccalib320d.lib

opencv_core320d.lib

opencv_datasets320d.lib

opencv_dnn320d.lib

opencv_dpm320d.lib

opencv_face320d.lib

opencv_features2d320d.lib

opencv_flann320d.lib

opencv_fuzzy320d.lib

opencv_hdf320d.lib

opencv_highgui320d.lib

opencv_imgcodecs320d.lib

opencv_imgproc320d.lib

opencv_line_descriptor320d.lib

opencv_ml320d.lib

opencv_objdetect320d.lib

opencv_optflow320d.lib

opencv_phase_unwrapping320d.lib

opencv_photo320d.lib

opencv_plot320d.lib

opencv_reg320d.lib

opencv_rgbd320d.lib

opencv_saliency320d.lib

opencv_shape320d.lib

opencv_stereo320d.lib

opencv_stitching320d.lib

opencv_structured_light320d.lib

opencv_superres320d.lib

opencv_surface_matching320d.lib

opencv_text320d.lib

opencv_tracking320d.lib

opencv_video320d.lib

opencv_videoio320d.lib

opencv_videostab320d.lib

opencv_xfeatures2d320d.lib

opencv_ximgproc320d.lib

opencv_xobjdetect320d.lib

opencv_xphoto320d.lib


opencv_aruco320.lib

opencv_bgsegm320.lib

opencv_bioinspired320.lib

opencv_calib3d320.lib

opencv_ccalib320.lib

opencv_core320.lib

opencv_datasets320.lib

opencv_dnn320.lib

opencv_dpm320.lib

opencv_face320.lib

opencv_features2d320.lib

opencv_flann320.lib

opencv_fuzzy320.lib

opencv_hdf320.lib

opencv_highgui320.lib

opencv_imgcodecs320.lib

opencv_imgproc320.lib

opencv_line_descriptor320.lib

opencv_ml320.lib

opencv_objdetect320.lib

opencv_optflow320.lib

opencv_phase_unwrapping320.lib

opencv_photo320.lib

opencv_plot320.lib

opencv_reg320.lib

opencv_rgbd320.lib

opencv_saliency320.lib

opencv_shape320.lib

opencv_stereo320.lib

opencv_stitching320.lib

opencv_structured_light320.lib

opencv_superres320.lib

opencv_surface_matching320.lib

opencv_text320.lib

opencv_tracking320.lib

opencv_video320.lib

opencv_videoio320.lib

opencv_videostab320.lib

opencv_xfeatures2d320.lib

opencv_ximgproc320.lib

opencv_xobjdetect320.lib

opencv_xphoto320.lib







猜你喜欢

转载自blog.csdn.net/m0_37870665/article/details/78063052