opencv 安装

一、地址

opencv官网
opencv Github

官方安装流程

二、概述

opencv有两种安装方式:1、根据自己的平台选择官方编译好的版本;2、下载源码自己编译。

三、预编译版本

官方预编译版本满足大多数需求。预编译版本有两个途径:
1、OpenCV核心团队:

  • GitHub releases
  • SourceForget.net

2、第三方机构:

  • System packages in popular Linux distributions
  • PyPI
  • Conda
  • Conan
  • vcpkg
  • NuGet
  • Brew
  • Maven

四、从源码构建

如果现有的预编译版本不满足使用需求,可以下载源码自行构建编译。OpenCV使用CMake构建管理系统进行配置和构建。

Step 0:依赖

安装c++编译器(compiler)和构建工具(build tool)。
*NIX平台,通常使用GCC/C++或者Clang作为编译器,使用Make或者Ninja作为构建工具。
Windows平台,可以使用Visual Studio IDE或者MinGW-w64作为编译器。
Android平台,使用Android NDK里面的Native toolchains作为编译器。
IOS、OSX平台,使用XCode IDE。

从官方网站安装CMake。

获取其他第三方依赖:例如具有视频解码功能的库,GUI显示相关的库;对选择的算法提供优化功能的库;用于生成文档和其他额外功能的工具等。查看OpenCV配置选项参考,获取可用选项和相应的依赖库。

Step 1:获取源码

典型的软件项目由一个或多个代码仓库组成。OpenCV有三个代码仓库:opencv- 主库,包含稳定且积极支持的算法;opencv_contrib 包含实验和非免费(专利)算法;还有一个带测试数据的仓库:opecv_extra

这三个仓库有两种下载方式:
1、下载仓库的快照存档,但是上面三个仓库的名称跳转既是;
2、glone仓库的完成提交历史(后面可以自由切换版本):

git clone https://github.com/opencv/opencv
git -C opencv checkout <some-tag>
# optionally
git clone https://github.com/opencv/opencv_contrib
git -C opencv_contrib checkout <same-tag-as-opencv>
# optionally
git clone https://github.com/opencv/opencv_extra
git -C opencv_extra checkout <same-tag-as-opencv>

注: 1、opencv_contrib 模块和opencv_extra 模块都是可选项,自行根据需求安装下载;
2、如果下载这俩模块,需要确保彼此兼容性。一般情况下下载对应版本号即可。
3、考虑目标平台和开发工具的版本。最新的OpenCV可能在非常老的编译器上出现构建问题。

Step 2:配置

在这一步CMake将会验证所有的工具和依赖是否可用以及兼容性问题。同时根据选择的平台生成中间文件。比如:Makefiles、IDE 工程和解决方案。通常这一步会在一个新建的build文件夹中完成。
Note: 这一步还可以使用 cmake-gui 来可视化修改编译选项。

Step 3:构建

在构建过程中,源文件被编译成目标文件,这些目标文件被链接在一起或者组合成库和相应的程序,这个步骤通过一下命令完成:cmake --build <build-directory> <build-options> ,或者直接调用make

Step 4:安装(可选)

在安装过程中,将把生成目录中的生成结果和其他文件复制到安装位置。UNIX上默认的安装位置是 /usr/local ,Windows上默认安装位置是 C:/Program files 。这个位置可以在配置步骤中通过设置 CMAKE_INSTALL_PREFIX 选项来更改。安装命令:cmake --build <build-directory> --target install <other-options>
Note: 1、此步骤是可选的,不安装可以直接在build目录中使用;
2、若安装位置受系统保护,需要加上sudo权限: sudo cmake …

五、配置选项

5.1 概述

配置选项可以通过一下三种方式设置:

  • 命令行: cmake -Doption=value ...
  • 初始缓存文件: cmake -C my_options.txt ...
  • 交互式界面: cmake-gui
    个人推荐使用cmake-gui可视化配置,由于选项太多了,使用命令行或是修改配置文件,一是不直观,二是容易漏,三是太麻烦;使用cmake-gui对应的好处,一是可以直接搜索想要的配置选项;二是上面Step2提到的配置生成过程中产生的错误尤其是依赖错误,可以方便的看提示及修改;三是生成之后的配置信息可以很方便的预览,特别是某些模块是否启用,依赖库的信息等。当然最终每个人依据个人喜好以及使用场景选择。

OpenCV的大部分配置选项可以在顶层的cmake脚本中找到:opencv/CMakeLists.txt 。一些选项是和特定的模块对应的。
可以使用CMake工具打印所有的可用选项:

# initial configuration
cmake ../opencv
# print all options
cmake -L
# print all options with help message
cmake -LH
# print all options including advanced
cmake -LA

其中,比较重要的选项是以 WITH_, ENABLE_, BUILD_, OPENCV_ 为开头的。选项的默认值因平台和其他选项值而异。

5.2、通用选项

5.2.1 构建额外模块选项

这里的附件模块即Step1中提到的opencv_contrib仓库中的算法模块。编译选项可以指定其中的部分抑或是全部,参考OpenCV编码风格指南
example:

# build with all modules in opencv_contrib
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv
# build with one of opencv_contrib modules
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/bgsegm ../opencv
# build with two custom modules (semicolon must be escaped in bash)
cmake -DOPENCV_EXTRA_MODULES_PATH=../my_mod1\;../my_mod2 ../opencv

5.2.2 构建Debug/Release选项

CMAKE_BUILD_TYPE 是一个可选项,用以指定生成的OpenCV库文件是debug版本抑或是release版本,区别在于debug会禁用许多编译器优化,也可以指定 CV_DISABLE_OPTIMIZATION 选项禁用优化功能,禁用优化的好处是方便断点调试。debug版本生成的二进制文件中包含调试符号。要在release版本中启用调试符号,需要开启BUILD_WITH_DEBUG_INFO 选项。

cmake -DCMAKE_BUILD_TYPE=Debug ../opencv
cmake --build .

5.2.3 构建静态库/动态库选项

BUILD_SHARED_LIBS 选择控制生成动态库 (.dll, .so, .dylib) 抑或是静态库(.a, .lib)。默认值取决于构建的目标平台,大多数情况下默认是ON(生成静态库)。

cmake -DBUILD_SHARED_LIBS=OFF ../opencv

ENABLE_PIC 设置CMAKE_POSITION_INDEPENDENT_CODE 选项。这是一个CMake的功能,启用或禁用 位置无关代码(PIC) 的生成。构建动态库或打算把静态库链接到动态库的时候,必须启用此选项。默认为ON。

5.2.4 构建 pkg-config 选项

OPENCV_GENERATE_PKGCONFIG 选项可以生成.pc 文件。至于什么是.pc(package configure 包/库配置文件)文件,比如gtk-2.0的pc文件内容如下:

prefix=/usr
exec_prefix=/usr
libdir=/usr/lib
includedir=/usr/include
target=x11
gtk_binary_version=2.4.0
gtk_host=i386-redhat-linux-gnu
Name: GTK+
Description: GIMP Tool Kit (targettarget)Version:2.6.7Requires:gdk−{target}-2.0 atk
Libs: -Llibdir−lgtk−{target}-2.0
Cflags: -I${includedir}/gtk-2.0

可以看到.pc文件中包含了一个库的头文件、库文件所在的路径信息。GCC等编译某个工程用到这个依赖库的时候,这样用 gcc -c pkg-config –cflags gtk-2.0 sample.c 就可以方便的添加依赖信息。使用 pkg-config 的 –cflags 参数可以给出在编译时所需要的选项,而 –libs 参数可以给出连接时的选项。gcc sample.o -o sample pkg-config –libs gtk-2.0
但是,由于配置过程的复杂性,生成的.pc文件可能包含不完整的第三方依赖项列表,并且可能在某些配置中不起作用,尤其是构建的静态库中。此功能自OpenCV 4.x版本以后不再正式支持,默认禁用。

5.2.5 构建tests,samples and applications

有两种类型的tests:准确性accuracy (opencv_test_) and 性能performance (opencv_perf_)。默认情况下启用tests和applications,examples需要手动启用。
相应的CMake选项:

cmake \-DBUILD_TESTS=ON \-DBUILD_PERF_TESTS=ON \-DBUILD_EXAMPLES=ON \-DBUILD_opencv_apps=ON \../opencv

5.2.6 构建部分模块

每一个模块都是modules目录下的一个子文件夹。每个模块都有单独的使能选项,可以禁用某个模块不参与构建:cmake -DBUILD_opencv_calib3d=OFF ../opencv ,也可以只构建指定的模块和它们的依赖项:cmake -DBUILD_LIST=calib3d,videoio,ts ../opencv ,这里我们指定了三个模块,但是配置脚本会自动确定所需要的其他依赖项。

– OpenCV modules:
– To be built: calib3d core features2d flann highgui imgcodecs imgproc ts videoio

5.2.7 下载依赖项

配置脚本可以尝试从网络上下载附加的库和文件,如果失败,相应的功能会被关闭。默认情况下,所有的文件被下载到<source>/.cache 目录,然后解压或复制到构建目录。也可以通过设置环境变量或者配置选择来更改下载缓存的位置:

export OPENCV_DOWNLOAD_PATH=/tmp/opencv-cache
cmake ../opencv
# or
cmake -DOPENCV_DOWNLOAD_PATH=/tmp/opencv-cache ../opencv

下载过程的日志会被保存在构建目录的CMakeDownloadLog.txt中。对于下载失败文件,会在构建目录中的帮助脚本中添加一个命令,例如download_with_wget.sh,你可以运行这些脚本,也可修改。
注:个人经验,这些第三方依赖往往难以在配置脚本中自行下载,有一个好办法,在OpenCV 官方GitHub中找到这些第三方依赖仓库(在该仓库不同的分支下,手动下拉选择即可),手动下载,并放到相应的位置,配置脚本就不会再重新下载了,此时可以正常往下执行

5.2.8 CPU级别的优化

在x86_64的机器上,OpenCV默认会针对SSE3指令集进行编译,可以通过以下选项进行修改:

cmake -DCPU_DISPATCH=AVX,AVX2 ../opencv

Note:其他平台有自己的指令集:例如ARM上的VFPVNEON,PowerPC上的VSCX

一些函数支持dispathch机制,通过编译多个指令集并在运行时选择其中一个,编译多个指令集列表选项:cmake -DCPU_DISPATCH=AVX,AVX2 ../opencv
要禁用dispatch机制,此选项设置为空即可:cmake -DCPU_DISPATCH= ../opencv

可以使用以下选项禁用部分代码的优化,以便进行debug:

# disable universal intrinsics
cmake -DCV_ENABLE_INTRINSICS=OFF ../opencv
# disable all possible built-in optimizations
cmake -DCV_DISABLE_OPTIMIZATION=ON ../opencv

Note:更多关于CPU优化选项的细节,可以查看CPU优化选项

5.2.9 Profiling, coverage, sanitize, hardening, size optimization

以下选项可用于生产带有检测或改进安全性的特殊构建,默认都被禁用。

选项 编译器 说明
ENABLE_PROFILING GCC or Clang Enable profiling compiler and linker options
ENABLE_COVERAGE GCC or Clang Enable code coverage support.
OPENCV_ENABLE_MEMORY_SANITIZER N/A Enable several quirks in code to assist memory sanitizer.
ENABLE_BUILD_HARDENING GCC, Clang, MSVC Enable compiler options which reduce possibility of code exploitation.
ENABLE_LTO GCC, Clang, MSVC Enable Link Time Optimization (LTO)
ENABLE_THIN_LTO Clang Enable thin LTO which incorporates intermediate bitcode to binaries allowing consumers optimize their applications later.

第一章之OpenCV安装相关推荐

  1. 第一章:OpenCV入门

    第一章:OpenCV入门 OpenCV是一个开源的计算机视觉库,1999年有英特尔的Gary Bradski启动.OpenCV库由C和C++语言编写,涵盖计算机视觉各个领域内的500多个函数,可以在多 ...

  2. 第一章:OpenCV简介

    第一章:OpenCV简介 本章节将介绍如何在不同系统平台安装配置OpenCV. 更多内容请关注我的GitHub库:TonyStark1997,如果喜欢,star并follow我! OpenCV-Pyt ...

  3. 乐行学院Redis5学习教程 第一章redis5的安装

    乐行学院Redis5学习教程 第一章redis5的安装 1.安装虚拟机 2.centeros下载 3.vmware安装centeros 4.vmware安装centeros设置IP 5.安装redis ...

  4. linux scons源码安装,SCons 第一章 构建并安装SCons

    第一章 构建和安装SCons ​ 本章将介绍一些安装SCons的基本步骤,本章也将介绍一些基本的python安装步骤,无论SCons还是python安装都非常简单. 1.1 安装python ​ 因为 ...

  5. 第一章 ArcGIS软件安装(Desktop、Server):ArcGIS10.4为例

    从0学习ArcGIS软件操作 第一章 ArcGIS软件安装(Desktop.Server):ArcGIS10.4为例 文章目录 从0学习ArcGIS软件操作 1.软件下载 2.Desktop安装 2. ...

  6. pytest官方文档 6.2 中文翻译版(第一章):安装和入门指南

    安装和入门指南 Python版本: Python 3.6, 3.7, 3.8, 3.9, PyPy3 平台: Linux and Windows PyPI 包名: pytest Documentati ...

  7. 第一章 Burp Suite 安装和环境配置

    Burp Suite是一个集成化的渗透测试工具,它集合了多种渗透测试组件,使我们自动化地或手工地能更好的完成对web应用的渗透测试和攻击.在渗透测试中,我们使用Burp Suite将使得测试工作变得更 ...

  8. 第一章 :Django安装与配置虚拟环境

    目录 一.安装虚拟环境(windows环境下) 1.pip安装 2. 创建一个用来放置虚拟环境的文件夹 3.创建环境变量 二.创建虚拟环境 1.virtualenv的简单命令使用 创建虚拟环境 查看有 ...

  9. java基础 第一章上(安装 配置java、简单dos命令)

    一.安装 配置java     下载安装          1.java官网下载jdk(32位或者64位根据自己电脑而定). 2.双击jdk.exe文件安装. 环境变量配置 右击我的电脑--属性--高 ...

最新文章

  1. Java虚拟机和Dalvik(android)虚拟机的区别
  2. python实现pdf解密和pdf转图片
  3. 修复 IE 的文本3像素偏移Bug
  4. vb子程序未定义怎么改怎么办_vb中子程序或者函数未定义!求教解决方案,
  5. 关于 SpringCloud 配置,你了解多少?
  6. Swagger注解-@ApiImplicitParams 和 @ApiImplicitParam
  7. cobalt strike
  8. sicily 1345. 能量项链
  9. Kaggle酒推荐,winemag-data-130k-v2.csv
  10. Redis闲谈:你一定需要的知识图谱
  11. 树莓派安装Homeassistant智能家居
  12. python 统计检验_常用统计检验的Python实现(附完整代码)
  13. Android仿微信朋友圈发布动态
  14. 进销存设计中的库存设计
  15. 移动端APP第一次登录和自动登录流程
  16. 【GA MTSP】基于matlab GUI遗传算法求解多旅行商问题(多起点不同终点)【含Matlab源码 935期】
  17. canvas动画及案例
  18. floyed算法、dijkstra算法、SPFA算法
  19. EDA-功能仿真和时序仿真有什么区别?
  20. 在html中引入谷歌地图

热门文章

  1. [实例]【EXCEL VBA】如何在excel里嵌入网页,动态显示网页 未完成
  2. 数字水印(DWT算法Python实现)
  3. Python实用脚本/算法集合, 附源代码下载
  4. 美团前端组件化开发实践
  5. 装配一台计算机有哪些安全注意事项,挤出机注意事项
  6. java毕业设计二次元信息分享平台(附源码、数据库)
  7. iPhone刷门禁卡的设置方法
  8. 一款极简聊天应用,比较完整,略好看
  9. 国产骨传导耳机推荐,目前最好用的几款骨传导耳机
  10. 配置CLion进行嵌入式STM32的HAL库开发