opencv01 相对完整的编译opencv3.3.0 win版本

来源:互联网 发布:软件平台架构 编辑:程序博客网 时间:2024/05/21 10:40

01 基本环境

opencv3.3.0已经于20170803外放release版本,把dnn模块移入主版本中,并且配备了7个dnn例程。opencv3.3.0的dnn模块,目前已经支持caffe/tensorflow/Torch。opencv3.3.0目前已经很好的支持c++、java和python。如果要研究opencv,最好自己编译opencv源码,并且跑测试程序(tests)和例程(samples)。这样,会比看blog效果明显。编译opencv的源码,建议使用git下载源码,切换稳定分支或者tag。有代码提交记录总是好的。编译工具,需要git、cmake、vs2015。java sdk:如果需要生成opencv的java接口。matlab:如果需要生成opencv的matlab接口。python3:如果需要生产opencv的python3接口。python2:不建议在windows上使用python2接口。perl:如果需要使用PACKAGE工程生成opencv的安装包。需要perl工具。caffe:可选,在没选择cmake中的caffe参数时,也能编译成功。自己编译,不要选择Build_opencv_world,这个是把所有项目编译为一个dll和lib。开发环境和调研环境使用Build_opencv_world无所谓,正式发布环境,建议不要使用Build_opencv_world,而是自己选择需要的dll和lib,减少发布包的体积。
ANT_HOME=d:\install\eclipse\apache-ant-1.10.0CLASSPATH=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%ANT_HOME%\lib;JAVA_HOME=d:\install\java\jdk1.8.0_121PATH=%PATH%;%JAVA_HOME%\bin;%ANT_HOME%\bin
Build_opencv_matlab是生成opencv的cv.m(matlab)接口的选项,需要正确设置matlab的环境变量。本实验安装了matlab2016b。
PATH=%PATH%;d:\install\MATLAB\R2016b\runtime\win64;d:\install\MATLAB\R2016b\bin;d:\install\MATLAB\R2016b\polyspace\bin

Build_opencv_python3是生成cv2.cp36-win_amd64.pyd的python3接口。可以正常生成。但运行PACKAGE生成nsis安装包时会报错。如果要生成python3的opencv接口,需要正确配置python3的环境变量。建议安装python3的debug包。这样,编译debug版本的时候,会顺利些。

PATH=%PATH%;C:\Python36\Scripts\;C:\Python36\

同时需要在cmake-gui中配置python3参数。

PYTHON3_EXECUTABLE=c:/Python36/python.exePYTHON3_INCLUDE_DIR=c:/Python36/includePYTHON3_INCLUDE_DIR2=PYTHON3_LIBRARY=c:/Python36/libs/python3.libPYTHON3_LIBRARY_DEBUG=c:/Python36/libs/python3_d.libPYTHON3_NUMPY_INCLUDE_DIRS=c:/Python36/Lib/site-packages/numpy/core/includePYTHON_PACKAGES_PATH=c:/Python36/Lib/site_packages

BUILD_DOCS编译doxygen文档。需要安装windows版本的doxygen。本实验编译可以成功,但是在install的时候,会出现一个错误。不过不影响使用。生成的完整文档在buildpath\doc\doxygen\html下,打开index.html即可。强烈建议编译该选项。可以考虑生成文档后,拷贝保存,在取消该选项。
在运行install时的错误:

错误      Problems running bibtex. Verify that the command 'perl --version' works from the command line. Exit code: 2 doxygen D:\git\opencv\build\v3.3.0\x64\doc\CUSTOMBUILD  1

因为我本地path环境变量中配置了caffe的install路径D:\git\DeepLearning\caffe\build\x64\install\bin,cmake会自动识别出caffe的存在,并且出现变量:

OPENCV_DOWNLOAD_PATH=d:/git/opencv/.cache

如果出现如下错误:

# D:\git\opencv\build\v3.3.0\x64\modules\python3\cmake_install.cmake# 提示这个文件的38行有问题ABSOLUTE path INSTALL DESTINATION forbidden (by caller):

可以在这个文件前面加入如下4行:

set(CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION 0)set(CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION 0)set(CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION 0)set(CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION 0)

这里写图片描述

02 下载3.3.0版本代码

下载源码,并切换到指定的3.3.0版本。

cd d:\gitgit clone https://github.com/opencv/opencv.gitcd d:\git\opencvgit checkout -b b3.3.0 3.3.0#git submodule update --init --recursivecd d:\gitgit clone https://github.com/opencv/opencv_contrib.gitcd d:\git\opencv_contribgit checkout -b b3.3.0 3.3.0#git submodule update --init --recursive

03 cmake配置

03.01 下载文件处理

配置CMake的源码路径和build路径
源码路径:D:/git/opencv
编译文件路径:D:/git/opencv/build/v3.3.0/x64
点击[Add Entry]添加cmake参数OPENCV_EXTRA_MODULES_PATH

# 注意,需要指定到opencv_contrib的modules目录OPENCV_EXTRA_MODULES_PATH=d:/git/opencv_contrib/modules

选择 vs2015 x64版本。

这里写图片描述

如果所示,点击[Finish]按钮后,在生成配置的过程中,会下载一些文件,根据自己的网络情况。下载可能失败。如果尝试3-5次后,依然失败。需要手动下载这些文件。根据cmake日志提供的错误信息,修改D:\git\opencv\cmake\OpenCVDownload.cmake文件。在opencv\cmake\OpenCVDownload.cmake中的download 中加入日志,显示下载文件的具体url路径,在153行下面,如图:

    ocv_download_log("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")    message("#cmake_download \"${CACHE_CANDIDATE}\" \"${DL_URL}\"")

这里写图片描述

加入日志后,在点击[Configure]按钮,会出现如下错误提示:

#cmake_download "D:/git/opencv/cache/ffmpeg/0dc72775ec3c14d1e049f51dc1280dbb-opencv_ffmpeg_64.dll" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/a86e53eb35737a50e5100e26af3aa1d29e810890/ffmpeg/opencv_ffmpeg_64.dll"#"D:/git/opencv/cache/ffmpeg/0dc72775ec3c14d1e049f51dc1280dbb-opencv_ffmpeg_64.dll"是下载后的保存文件名称。#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/a86e53eb35737a50e5100e26af3aa1d29e810890/ffmpeg/opencv_ffmpeg_64.dll"是需要下载文件的url。#手动下载这些下载超时的文件,放入指定目录,即可。CMake Warning at cmake/OpenCVDownload.cmake:189 (message):FFMPEG: Download failed: 28;"Timeout was reached"For details please refer to the download log file:D:/git/opencv/build/v3.3.0/x64/CMakeDownloadLog.txtCall Stack (most recent call first):3rdparty/ffmpeg/ffmpeg.cmake:20 (ocv_download)cmake/OpenCVFindLibsVideo.cmake:225 (download_win_ffmpeg)CMakeLists.txt:605 (include)#cmake_download "D:/git/opencv/cache/ippicv/75060a0c662c0800f48995b7e9b085f6-ippicv_2017u2_win_intel64_20170418.zip" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/a62e20676a60ee0ad6581e217fe7e4bada3b95db/ippicv/ippicv_2017u2_win_intel64_20170418.zip"

03.02 cmake配置项

opencv cmake配置项01
opencv cmake配置项02
opencv cmake配置项03
opencv cmake配置项04
opencv cmake配置项05
opencv cmake配置项06
opencv cmake配置项07

04 vs2015工程

生产439个工程,不包括python3接口和docs项目。
ALL_BUILD、INSTALL、PACKAGE、uninstall都可以正常运行,RUN_TESTS有一部分会失败(不配置,直接运行时, fuzzy处,卡死)。
这里写图片描述

samples目录下面的测试工程很值得研究,
samples/cpp项目有很多老的人脸识别demo。比如:facedetect等。
samples/dnn是3.3.0新引入的7个dnn相关的例子。
可以参考官网的文档http://docs.opencv.org/master/d5/de7/tutorial_dnn_googlenet.html。运行samples\dnn\() caffe_googlenet例程。

05 运行caffe_googlenet例程

vs2015切换到debug环境。
vs2015设置项目() caffe_googlenet为启动项。
参考官网文档:http://docs.opencv.org/master/d5/de7/tutorial_dnn_googlenet.html
下载图片space_shuttle.jpg
2个文件
bvlc_googlenet.prototxt
bvlc_googlenet.caffemodel
保存到debug的输出目录:D:\git\opencv\build\v3.3.0\x64\bin\Debug
() caffe_googlenet项目的调试项工作目录设置为(OutDir)>>> (OutDir)
这里写图片描述

运行效果如下:

Attempting to upgrade input file specified using deprecated V1LayerParameter: bvlc_googlenet.caffemodelSuccessfully upgraded file specified using deprecated V1LayerParameterNet Outputs(1):probBest class: #812 'space shuttle'Probability: 99.9804%Time: 403.647 ms (average from 10 iterations)

这里写图片描述

06 生成的文档

Build_Docs选项产生内容在D:\git\opencv\build\v3.3.0\x64\doc\doxygen\html目录下。找到html下面的index.html,可以本地阅览。
这里写图片描述

INSTALL生成目录在D:\git\opencv\build\v3.3.0\x64\install目录,内容如下:
这里写图片描述

PACKAGE生成的安装包如下:
这里写图片描述

原创粉丝点击