要安装opencv+contrib, 必须先基本会用CMake,我下载的是CMake1.10
基本过程
-
先下载opencv3.4.5的源码和opencv_contrib3.4.5。
都在github中:
opencv3.4.5源码
opencv_contrib源码
解压后的文件夹都放在一个目录(opencv3.4.5+contrib)中,还在这里面新建一个build文件夹 -
在"where is the source code"中选择opencv的源码文件
在"where to build the binaries"中选择opencv3.4.5+contrib/build -
之后就是configure和generate以及open project和用vs编译
-
vs编译,细说一下,debug+x64下编译然后install,release+x64下编译然后install,最后我发现在
opencv3.4.5+contrib/build/install
的库目录中有很多以d.lib或.lib结尾的文件,比如opencv_world345.lib
,```opencv_world345d.lib``。
如何install: 右击install->仅用于项目->仅生成install
-
配置环境变量
问题
一. 有很多文件下载不了
在configure和generate后会有很多warming,表示文件下载失败
会产生很多以以下开头的日志信息,日志位于opencv3.4.5+contrib/build/CMakeDownloadLog.txt
#do_copy "vgg_generated_80.i" "7cd47228edec52b6d82f46511af325c5" "https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i" "D:/APP/opencv3.4.5+contrib/build/downloads/xfeatures2d"
原因
在国内根本没法下载这些在国外的文件
解决方案
- 这里有个很方便的地方,就是不管什么目录的什么文件,都先保存在opencv3.4.5+contrib/sources/.cache中,.cache中有ffmpeg,ippicv等文件夹,都是存放不同类型的文件的。
- 所以这个时候vpn就很重要了,迅雷下载也帮了忙
- 解释一下上面的CMakeDownloadLog.txt文件中的信息的意思
总体来说就是从一个网站下载东西然后保存到一个最终的文件夹中(而不是.cache)
7cd47228edec52b6d82f46511af325c5 表示md5值,我也不知道干嘛的。 - 从[https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i ]中下载东西保存到任意文件夹中,在
opencv3.4.5+contrib/sources/.cache
中有一个未下载完的文件叫做:7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
, 名字前面有个md5值,然后就把下载好的替换.cache中未下载好的,并改名字为7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
我也不知道到底要不要保证这个md5值必须一样 - 完成所有文件的替换后,就重新generate
- 还有的文件不用去网站下载,可以用迅雷创建一个任务,把链接粘贴进去。
二. 语法错误
我发生的语法错误是:
CMake Error at 3rdparty/ippicv/ippicv.cmake:54 (ocv_download):
Syntax error in cmake code at
D:/APP/opencv3.4.5+contrib/sources/3rdparty/ippicv/ippicv.cmake:58
when parsing string
$env{opencv_ippicv_url}
Syntax $env{} is not supported. Only ${}, $ENV{}, and $CACHE{} are
allowed.
Call Stack (most recent call first):
cmake/OpenCVFindIPP.cmake:243 (download_ippicv)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:784 (include)
因为我在configure之后,填写OPENCV_EXTRA_MODULES_PATH
时,粘贴过去的,不是browser的。
三. 试图更改下载ippicv_2019_win_intel64_20180723_general.zip的路径时发生了错误
CMake Error at 3rdparty/ippicv/ippicv.cmake:54 (ocv_download):
Syntax error in cmake code at
D:/APP/opencv3.4.5+contrib/sources/3rdparty/ippicv/ippicv.cmake:58
when parsing string
$env{opencv_ippicv_url}
Syntax $env{} is not supported. Only ${}, $ENV{}, and $CACHE{} are
allowed.
Call Stack (most recent call first):
cmake/OpenCVFindIPP.cmake:243 (download_ippicv)
cmake/OpenCVFindLibsPerf.cmake:12 (include)
CMakeLists.txt:784 (include)
我把ippicv.cmake第47行的"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
修改成了file://D:/documents/a.zip
, 其实这里不用加上``a.zip,但要加上最后的
/```。
我这样做的目的是,直接从本机下载而不是网络。因为我已经自己下载好要用的文件了
四. 莫名其妙的python路径错误的问题
我也没解决,直接把python路径从环境变量中删了,然后从新从头开始configure就好了