编译OpenCV源码
字数统计:837 阅读时长 ≈ 3分钟放在开头:常见编译器对应的OpenCV库
OpenCV介绍
OpenCV 是(Open Source Computer Vision Library)的简称,在计算机视觉领域中是一个非常重要的开源库,该库使用的是BSD开源协议,它允许你使用源代码进行你自己项目的开发。
如何选择版本
刚接触OpenCV可能都会考虑一个问题:选那个版本好呢?
有人说选2., 有人说3.的好,到底那个版本比较合适,是一个比较难决定的问题。
这个问题的核心不在于各个版本之间有什么差别,而在于你需要OpenCV来做什么:
如果你只是刚刚学习,对OpenCV还不熟悉,那么就不用纠结,随便下载一个最新或者次新版本,安装上尝试一下就好,如果你的工作环境非常特殊,项目是从前辈那里接手的,也不用纠结,用子前项目的版本。总之,没有哪一个版本好与不好之分,只有版文适合还是不适合你。
如何安装
OpenCV提供编译好的Visual Studio(VC编译器)可以直接使用的库,但是在其他不是使用VC编译器的环境下就无法使用了,所以得学会自己编译CV源码。自己编译CV源码时会遇到很多很多问题,很多人无法正常配置成功,但是正是因为问题多,网上相关的教程帖子也多,多百度百度配置成功的概率还是很大的。
下载软件和工具
在安装软件之前看一下自己的工作平台是Windows还是Linux。这两个平台对应的开发工具(编译器)是不一样的如下图:
在windows开发主要用visual studio。visual studio有很多版本,不同版本的visual studio不能通用一个OpenCV库,因为不同版本的vs对应不同版本的VC编译器,而可直接使用的OpenCV库必须是对应的VC编译器编译成的。
OpenCV官网给出了windows版本的下载包其中就包含已经编译好的库,需要配合相应版本的vs才可以直接使用,其他情况下需要自己编译。
自己编译OpenCV库通常需要两个源码以及一个编译工具
- OpenCV源代码
- 对应的opencv_contrib
- CMake
首先下载OpenCV源码,打开githubOpenCV。点击releases就可以找到并下载你需要的对应的版本
然后下载和opencv 版本相同 的opencv_contrib源代码,并将两部分源代码解压到你的电脑里。
使用CMake编译源码
注:这里的示例是为Qt配置OpenCV,Qt官方教程
1. 配置Qt和Mingw
打开QtCreator,在Kits-构建套件,选中Desktop Qt 版本号 MinGW bit
,设为默认,OK。
2. 添加 MinGW 到环境变量
为系统变量 Path 添加 E:QtQt5.9.3Toolsmingw530_32bin
验证Mingw是否配置成功:在终端
中输入gcc -v
,如果有输入则说明配置成功
3. 使用 CMake 生成 OpenCV 的 Makefile
打开 cmake-gui,设置源码和生成路径:
- Where is the source code:
E:/2_Technology/Program/OpenCV/opencv-4.2.0
- Where to build the binaries:
E:/2_Technology/Program/OpenCV/opencv-4.2.0/build
点击 Configure,设置编译器
- Specify the generator for this project:
MinGW Makefiles
- Specify native compilers(如果Mingw配置成功则可以使用默认选项)
- Next
- Compilers C:
C:/Qt/Tools/mingw730_64/bin/gcc.exe
- Compilers C++:
C:/Qt/Tools/mingw730_64/bin/g++.exe
- Finish
编译配置:
- 勾选 WITH_QT
- 勾选 WITH_OPENGL
- 不勾选 WITH_IPP
- OPENCV_EXTRA_MODULES_PATH:
E:\2_Technology\Program\OpenCV\opencv-4.2.0\opencv_contrib-4.2.0\modules
点击 Configure,再次配置:
- 设置 QT5_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5
- 设置 Qt5Concurrent_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5Concurrent
- 设置 Qt5Core_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5Core
- 设置 Qt5Gui_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5Gui
- 设置 Qt5Test_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5Test
- 设置 Qt5Widgets_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5Widgets
- 设置 Qt5OpenGL_DIR 为
C:/Qt/5.14.1/mingw73_64/lib/cmake/Qt5OpenGL
- 设置 CMAKE_BUILD_TYPE 为 Release 或者 RelWithDebInfo
点击 Generate 生成 Makefile
4. 编译OpenCV
打开终端进行编译:(-j x是使用x个线程进行编译, On an 8 core CPU, you can set it to 8 or higher, so all cores are used.)
E:
cd E:\2_Technology\Program\OpenCV\opencv-4.2.0\build
mingw32-make -j 8
mingw32-make install
编译常见错误
1. 多线程编译错误信息不明确
表现
Makefile:161: recipe for target 'all' failed
mingw32-make: *** [all] Error 2
解决
使用单线程编译:
mingw32-make
本文由simyng创作,
采用知识共享署名4.0 国际许可协议进行许可,转载前请务必署名
文章最后更新时间为:April 16th , 2020 at 02:44 pm