【计算机视觉】Opencv编译采坑记录
windows10 opencv相关软件版本:
Win10,Opencv3.3.0、opencv_contrib3.3.0、Cuda9.0 V9.0.176、Python3.6.3、cmake-3.9.6-win64-x64、VS2015 14.0.25420.01 Update3
下载各种版本opencv:https://opencv.org/releases.html (2017-08-03,3.3.0)
下载各种版本opencv_contrib: https://github.com/opencv/opencv_contrib/releases (on Aug 4, 2017 3.3.0)
下载各种版本CMake:https://cmake.org/files/v3.9/ (2017-11-10, cmake-3.9.6-win64-x64.zip)
参考文章:
https://www.cnblogs.com/xinxue/p/5766756.html
https://blog.csdn.net/poem_qianmo/article/details/21974023
https://blog.csdn.net/moxiaonuo/article/details/77823990
cmake流程:
打开cmake
填写opencv的源目录,产出目录
点击configure一下
去掉matlab
添加BUILD_DOCS、example、build_test、performance相关的
确认with_cuda,WITH_CUBLAS被勾选
(删除2.0 3.0 3.5 3.7 5.0 5.2 6.0 6.1中的2.0)
添加OPENCV_EXTRA_MODULES_PATH,opencv_contrib-master/modules目录
点击configure, generate
VS流程:
注意vs打开时使用管理员 权限,注意C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\cvtres.exe的权限
下面仅介绍注意事项:
选择vs2105(不带64的)
注意权限问题:
1 Opencv及其产出文件尽量放在非C盘目录下
2 运行VS的时候,右键单击,选择总是以管理员方式运行,同理对Cmake_Gui等exe文件也是这般处理(在最后编译opencv的时候防止出现各种乱起八糟的问题)。
步骤:
1 使用Cmake Configure Opencv的Source,几步步骤参考毛星云文章。Configure过程中,可能错误如下:
1)无法下载某些dll,手动下载对应的版本
2)Cuda版本问题导致获取不到Cuda相关文件,如CUDA_nppi_LIBRARY (ADVANCED)。参考kmiracler文章及其回复中的Stack Overflow文章
3)缺少unistd.h,改文件为linux下才有,在windows下,你需要手动创建该文件,输入下面内容,然后保存到某个可以被引用到的include环境变量下,如vs的,或者opencv自身的。
/** This file is part of the Mingw32 package.
* unistd.h maps (roughly) to io.h
*/
#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H */
4)注意需要两边Configure,第一遍没有红色的条目之后,第二遍加入opencv扩展包的modules路径:xxxx/opencv-3.3.0/opencv_contrib-3.3.0/modules,重新Configure到Configure done之后,进行generate。
5)之前使用的opencv3.2,cmake3.11与cmake3.8在vs编译opencv source的时候,都会出现一个“警告被当做错误”的问题,这个很麻烦,换了上面版本就好些了,不知道哪里问题
2. vs编译opencv source
1 无法打开:python36_d.lib的问题:使用对应的python安装包,重新安装或修复,在某一个选择下载debug文件。
2 C++ 'python33_d.lib' not found,一个是注意将该文件加入到环境变量中,另一个参考文章
3. Visual Studio: MSB3073 error exited with code 1:可能是CMAKE没有访问某个文件的权限,为其添加管理员权限。
其它错误:
cmake - configure 步骤
【】错误:CheckIncludeFile.c(1): fatal error C1083: 无法打开包括文件: “pthread.h”: No such file or directory
不管
【】CMake Error: The following variables are used in this project, but they are set to NOTFOUND
【】error in configuration process project files may beinvalid
1 选择的vs版本不对,
2 OPENCV_EXTRA_MODULES_PATH需要选择D:\Dev\opencv-3.3.0\opencv_contrib-3.3.0\modules,具体到modules。
3 在当前config的output里,查找错误,如缺失某种路径(很难找),其它原因如:https://blog.csdn.net/u010185989/article/details/58111115
【】Cmake编译OpenCV源码提示error MSB6006: “cmd.exe”已退出,代码为 1解决思路
https://blog.csdn.net/m0_37676674/article/details/78850280
https://blog.csdn.net/thefieryice/article/details/18548269
填写source、build目录
Configure
首先勾选BUILD_opencv_world!!!这个会让动态库的lib减少到只需要world以及ts两个,非常方便。
然后如果编译静态库,请把BUILD_SHARED_LIBS去掉!
如果编译动态库,就勾选上!
然后点两次Generate即可
Ubuntu16: