win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1

一、电脑环境:win10 VS2015 cmake3.11.3

先安装vs2015 update 3,具体打开网站https://msdn.itellyou.cn/

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第1张图片

接着安装cmake 

二、背景

为了使用opencv dnn模块,安装了opencv 3.4.1预编译版,安装很简单,但有一个问题,程序运行的时候无法进入到函数内部实现中,这给刚接触dnn模块的我增加了调试的难度,出问题了无法进行调试,因此还是决定自己编译一下。所有涉及到的文件均给出百度云下载路径!

三、下载链接

    opencv3.4.1百度网盘下载链接:https://pan.baidu.com/s/17Vilcmlw5Ce6KK2mfsmcWQ 密码:rl5c

    opencv_contrib-3.4.1百度网盘下载链接:https://pan.baidu.com/s/131yLMC96Bo-YKv1omXVVPQ 密码:mg8d

    如果嫌弃下面一个一个下载太麻烦,我这有一个下载好的包:

    链接:https://pan.baidu.com/s/1U7EzsSy3-QBZdMPbc6lIVQ  提取码:wkp8  

    ffmpeg_version.cmake百度网盘下载链接:https://pan.baidu.com/s/1H6uxba0cgRUsdBcI69axow 密码:xsbb

    opencv_ffmpeg.dll百度网盘下载链接:https://pan.baidu.com/s/1bTzOMjDDGrvcaZWIvsdSlw 密码:rynu

    opencv_ffmpeg_64.dll百度网盘下载链接:https://pan.baidu.com/s/1k5iBc1-vYBGCYtSWXSG2_g 密码:epan

    face_landmark_model.dat百度网盘下载链接:https://pan.baidu.com/s/1vyYrn66GjXYpZvbtve5azg 密码:km0k

    ICCIPV:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20170822/ippicv

四、cmake编译opencv

1、下载opencv3.4与opencv_contrib3.4相对应的版本,上文已给出百度云下载链接;

2、Cmake编译Opencv3.4,选定 源码路径 和 编译输出路径,下图是我的源码路径和编译输出路径,然后单击configure;

     win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第2张图片

      单击configure后,弹出一个界面,我的选择如下图设置,单击“Finish”即可开始编译;

      win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第3张图片

        这个过程会出现很多错误需耐心反复编译,主要原因是他要从国外网站下载文件,若下载失败就编译不通过,以红色显示;

        解决办法:手动下载。查看D:\software\opencv3.4.1\build中打开CMakeDownloadLog.txt文件,里面有下载失败文件的链接及下载文件要保存到本地的路径,将文件覆盖到保存的本地路径和D:\software\opencv3.4.1\opencv-3.4.1\.cache相应的路径中,并按照我下载失败的分别为opencv_ffmpeg.dll、opencv_ffmpeg_64.dll、ffmpeg_version.cmake、face_landmark_model.dat,上文已给出百度网盘下载路径。

       以opencv_ffmpeg_64.dll下载失败为例:打开CMakeDownloadLog.txt,将手动下载的pencv_ffmpeg_64.dll复制到下图两个标红线路径中(下图从别人博客中下载,因此与我的路径对不上),并将第二个路径下复制过去的opencv_ffmpeg_64.dll名字改为下 图cashe下的名字,前面有一串数字的那个名字。

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第4张图片

        所有下载失败的的文件都完成上述操作后,勾选 BUILD_opemcv_world;主要是把所有的lib文件都弄到一opencv_world340d.lib中方便配置,若不勾选在最后会产生大概38个.lib文件;勾选 BUILD_EXAMPLES;就是编译OPencv自带的例程,完成后再次单击“Configure”即可。单击“Configure”直到Cmake3.10没有红色显示为止。

       选择OPENCV_EXTRA_MODULES_PATH 把路径选择为解压的opencv_contrib3.4文件中的“modules”即D:\software\opencv3.4.1\opencv_contrib-3.4.1\modules 。如下图:

        再次单击“Configure”,如若出现下载失败的情况,解决办法如上文, 再次单击“Configure”直到Cmake3.10没有红色显示为止。最后单击“Generate”完成Cmake编译的最后工作。     

五、vs2015的最后编译

        打来编译输出文件D:\software\opencv3.4.1\build找到 Opencv.sln打开工程文件,选择debug  x64点击解决方案,点击右键,选择生成解决方案;随后漫长的等待。那个错误是与Python有关不用考虑;选择 CMakeTargets下的INSTALL右键选择仅用于项目->仅生成INSTALL即可,之后会在D:\software\opencv3.4.1\build 找到一个install文件夹即为最后编译生成的Opencv3.4配置需要文件。

具体操作如下,下图是从其他人那边截取过来,实际路径请自行比对

  用VS 2015打开OpenCV.sln工程,在解决方案中可以查看工程目录:

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第5张图片

  编译生成debug版本的库,记得在此之前要选择编译的平台信息,这就是编译生成debug版本和release版本的区别,也可以选择release,因为自己的工程可能要用到相应的动态链接库:

  在解决方案中选中工程,右键选择重新生成解决方案:

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第6张图片

  编译成功:

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第7张图片

  .找到CMakeTargets中的INSTALL,然后右键选择“仅限于项目”-->“仅生成INSTALL”:

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第8张图片

  完成编译后,Release模式下同理。此时,有了install目录。该目录包含了我们需要的头文件、库文件。

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第9张图片

六、测试opencv(下面出现的所有内容都在install文件夹中)

opencv系统变量设置
在本文中,使用的是64位编译器。故而需要将x64目录下的vc14导入系统变量中。 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第10张图片
vs2015工程配置
1.需要注意的是,在附加选项那要勾选空项目。 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第11张图片
2.新建工程后,需要点中工程名称,然后点击视图>其他窗口>资源管理窗口,然后在右边展开。选中Debug | x64 【因为选用x64编译器进行debug,故而选择此选项进行配置】,然后点击右键,选择属性。即可进入debug属性页。 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第12张图片
3.点击VC++目录,对包含目录和库目录进行配置。在本文中,包含目录为: 
H:\OpenCV\opencv\build\include 
H:\OpenCV\opencv\build\include\opencv 
H:\OpenCV\opencv\build\include\opencv2 
库目录为: 
H:\OpenCV\opencv\build\x64\vc14\lib

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第13张图片

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第14张图片

4.依次添加包含目录 
H:\OpenCV\opencv\build\include 
H:\OpenCV\opencv\build\include\opencv 
H:\OpenCV\opencv\build\include\opencv2 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第15张图片
5.添加库目录H:\OpenCV\opencv\build\x64\vc14\lib 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第16张图片
6.包含目录和库目录配置好之后,点击链接器,选中附加依赖项。此处导入H:\OpenCV\opencv\build\x64\vc14\lib中的opencv_world310d.lib库即可。 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第17张图片
测试配置是否成功
首先,点击 解决方案资源管理器,在源文件那点击右键。选择添加项>新建项。在Visual中选择C++文件,更改文件名。最后点击添加。 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第18张图片

 win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第19张图片

 win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第20张图片

#include 
#include 

using namespace cv;
int main(int argc, char** argv) {
    Mat src = imread("G://1.jpg");
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("test opencv setup",CV_WINDOW_AUTOSIZE);
    imshow("test opencv setup", src);

    waitKey(0);
    return 0;
}

注意:G://1.jpg是小编中电脑的一张图片,此处须改成本机电脑存在的图片路径。因为配置的是dubug | x64模式,故而中红圈中须选择Debug和x64,否则编译失败。

出现opencv_world341d.dll缺失的问题?

原因:

那基本就是你的bin路径未添加,或者就是你先打开了vs,后添加了环境变量,那么vs就找不到bin中的opencv_world341d.dll文件。

第一种方案:

重启vs,就是这么简单

第二种方案:

把相关的dll都拷贝到Windows操作系统的目录下。如果你的Windows安装在C盘,那么路径就是c:\Windows\System32。按照之前我的OpenCV的存放环境,这些dll存放在D:\soft\opencv\opencv3.4.1\opencv-3.4.1\build\install\x64\vc14\bin目录下。

到这个目录下,【Alt+A】全选,【Alt+C】拷贝,然后转到c:\Windows\System32下面,【Alt+V】复制,简单粗暴地就完成了。

PS:对于Windows 8,则要放在要在SysWOW64文件夹中。

效果图为: 

win10 VS2015 cmake编译opencv3.4.1和opencv_contrib-3.4.1_第21张图片
再次提示

1.在配置vs2015一定要确定编译器位数 
2.下载的opencv版本一定要跟vs版本对应 
3.配置完系统变量最好重启 
4.图片格式须使用opencv支持的图片格式 
5.debug模式和releases模式一定要选对 
最后,小编祝大家配置成功。
 

参考

https://www.cnblogs.com/fx-blog/p/8214724.html

https://blog.csdn.net/qq_37658979/article/details/82707968

https://blog.csdn.net/niuyuanye/article/details/79607770

你可能感兴趣的:(Opencv)