手把手练习--cmake+VS2015编译OpenCV3.3源码(x86版本)

1:首先下载OpenCV3.3.0的源码:



2:解压源码包opencv-3.3.0.zip,【点击"解压当前文件夹"】:,为了以下方便说明,这里以F:\opencv-3.3.0为例:


查看源码包,在文件夹下3rdparty【就是需要的第三方的库】,但是第三方库 ffmpeg 和 ippicv是空的,

在用cmake配置编译时,有些需要联网下载,并保存在源但是往往会下载很慢,所以可以提前下载好,放进对应的文件夹即可,这个对应的文件夹是源码文件夹下的.cache文件夹,需要新建,即在F:\opencv-3.3.0下新建.cache文件夹,注意不要鼠标右键新建文件夹,建立不了前缀名是"."的文件夹,需要用命令行,> md .cache


即可新建。


然后在.cache文件夹下,新建ffmpeg和ippicv文件夹。以下详细介绍下载动态库。


3:下载对应的ffmpeg的动态库:

打开文件夹ffmpeg下的ffmpeg.cmake文件,会看到有一个第一行,我们需要下载master_20170704


打开https://github.com/opencv/opencv_3rdparty/branches/all,找到对应的名字:


然后下载,解压后,将以下三个文件复制到F:\OpenCV-3.3.0/.cache/ffmpeg文件夹下:


同时将这三个复制到源码的文件夹F:\opencv-3.3.0\3rdparty\ffmpeg下,只是为了后期配置编译的更快。

4:下载ippicv

与上述步骤类似,打开\opencv-3.3.0\3rdparty\ippicv\ippicv.cmake文件:


需要下载后缀是20170418的包,解压后,会看到看到几个不同平台下的压缩包:

比如这里需要编译x86版本的,将ippicv_2017u2_win_ia32_20170418.zip复制到到F:\opencv-3.3.0\.cache\ippicv文件夹下,然后注意要重命名,加上改.zip的hash码,那么怎么查看该.zip的hash码呢?同样打开\opencv-3.3.0\3rdparty\ippicv\ippicv.cmake文件,


ippicv_2017u2_win_ia32_20170418.zip的文件名字,改为以下,即在前面加上它对应的HASH码:


这样点.cache文件夹下的两个文件夹都已经完成了。


5:电脑上需要安装Python3.X否则会有以下提示:

再编译过程需要python3.X版本

6:打开cmake


即以以下为例:


为了快速编译将源码包中的文件夹3rdparty整个复制到F:\OpenCV3.3Build文件夹下,
然后点击“Configure”按钮:

等一两分钟后,等待配置完成:


然后再点击"Configure"按钮


点击“Generate”,


可以关闭'CMake"。

7:打开编译后的文件夹F:\OpenCV3.3Build


打开OpenCV.sln,然后点击Build Solution:

需要等待几分钟:

最后会出现以下界面

,这个时候x86版的Debug版本已经编译成功,生成的动态库、共享库、可执行文件在文件夹F:\OpenCV3.3Build\bin\Debug下

打开该文件夹查看生成的动态库


第8步:点击"INSTALL"->Project Only Build Only INSTALL


然后在F:\OpenCV3.3Build下自动生成一个install文件夹,文件夹下保存了OpenCV的头文件和x86 Debug模式下的
动态库和共享库

打开x86文件夹,

打开vc14文件夹

lib文件夹:

可以看到有一个是opencv_dnn330d.lib即深度学习的共享库

9:编译x86的release版本

点击Build->Build Solution,通以上编译Debug版本类似,需要等待几分钟,。


然后,这时查看F:\OpenCV3.3Build\bin下的Release文件夹下已经生成好动态库

同样点击:

等几秒钟

然后查看F:\OpenCV3.3Build\install\x86\vc14\lib多了一些文件名不带"d"的共性库文件

10:测试使用
[cpp]  view plain  copy
  1. #include<iostream>  
  2. #include<string>  
  3. #include<opencv2\core\core.hpp>  
  4. #include<opencv2\highgui\highgui.hpp>  
  5. #include<opencv2\imgproc\imgproc.hpp>  
  6. using namespace cv;  
  7. using namespace std;  
  8. int main(int argc,char*argv[])  
  9. {  
  10.     Mat img = cv::imread(argv[1], cv::IMREAD_COLOR);  
  11.     imshow("as", img);  
  12.     waitKey(0);  
  13.     return 0;  
  14. }  

猜你喜欢

转载自blog.csdn.net/nchfgfb/article/details/79109993