opencv安装有两种方式:

1.使用包管理器安装预编译版本(安装十分简单,但是版本只有4.2.0,且没有扩展模块且不支持Qt窗口)

2.从源码安装(比较复杂,但是推荐)

1.安装预编译版本

sudo apt install libopencv-dev

这样就安装完成了

这种安装方法,默认把opencv相关文件放置在系统目录

2.从源码构建安装(重点)

1.OpenCV官网下载源码

官网下载地址icon-default.png?t=N7T8https://opencv.org/releases/

如上图所示,选择Sources下载zip源码压缩包,下载完解压,如下图所示:

2.编译安装

安装所需工具

#更新apt可安装包列表
sudo apt update

#安装cmake和g++
sudo apt install -y cmake g++

#安装项目构建工具,有两个选择,make或ninja, ninja自动支持多线程,make得自己加-j选项,这里先全安装上
sudo apt install make ninja-build



使用cmake构建

#进入到源码目录
cd opencv-4.9.0

#cmake构建
cmake -B build -GNinja -DCMAKE_INSTALL_PREFIX=~/lib/opencv4.9.0_install

命令解释:

        -B build :在当前目录创建一个build文件夹,然后构建到build文件夹里

        -GNinja : 指定生成用Ninja来构建的项目,默认是-GUnix(用make构建)

        -DCMAKE_INSTALL_PREFIX=~/lib/opencv4.9.0_install : 指定安装目录,否则默认安装到系统目录:/usr/lib,usr/include,这里是多版本共存的关键,指定一个自定义的目录(最好别是系统目录),比如我就在~/lib/opencv4.9.0_install中

注意:该命令执行过程中可能会连外网下载本地缺失的文件,建议科学上网设置好https代理

cmake命令执行完毕后,build目录多了一大堆文件,如下图所示:

 继续在当前目录,然后执行命令:

cmake --build build/

 正式开始编译! 

编译时间较长,耐心等待......

编译完成后执行命令:

cmake --install build/

执行这个命令,将编译好的库和头文件以及cmake文件复制到之前指定的CMAKE_INSTALL_PREFIX里,如下图所示:

3.设置环境变量,切换版本

使用OpenCV一般搭配cmake来使用,所以选择OpenCV的工作可以通过设置cmake的环境变量实现。

cmake是通过find_package函数来实现查找包功能,而find_package函数又是通过设置的搜索路径来查找对应的库配置文件。具体可查看:cmake:指定find_package的搜索路径_find_package 指定路径-CSDN博客文章浏览阅读1.4w次,点赞12次,收藏24次。find_package(OpenCV PATHS /opt/opencv NO_DEFAULT_PATH REQUIRED)if (OpenCV_FOUND) include_directories(${OpenCV_INCLUDE_DIRS}) message( ${OpenCV_LIBS})else() message("OpenCV not found, so we won't build the project.")en_find_package 指定路径https://blog.csdn.net/zhizhengguan/article/details/115207345

 概括一下就是:

1.可以在CMakeLists.txt文件里设置cmake环境变量

       <PackageName>_ROOT (支持查找子目录,但是需要设置cmp0074策略)或  <PackageName>_DIR(不支持子目录查找,必须指定OpenCVConfig.cmake所在目录)

2.可以在执行cmake命令时添加-D选项指定目录

        CMAKE_PREFIX_PATH 或 CMAKE_FRAMEWORK_PAT或CMAKE_APPBUNDLE_PATH

3.通过系统环境变量Path来搜索 

演示一下:

1.设置<PackageName>_DIR

查看一下OpenCVConfig.cmake文件所在目录:

cmake_minimum_required(VERSION 3.0)

project(Demo)

set(OpenCV_DIR "~/lib/opencv4.9.0_install/lib/cmake/opencv4") #对应上面刚查的目录

find_package(OpenCV 4.9 REQUIRED)
message("find ${OpenCV_VERSION}")

 cmake运行一下,看到输出即可。

2.添加-D选项指定目录

cmake_minimum_required(VERSION 3.0)

project(Demo)

# set(OpenCV_DIR "~/lib/opencv4.9.0_install/lib/cmake/opencv4")

find_package(OpenCV 4.9 REQUIRED)
message("find ${OpenCV_VERSION}")

注释掉set命令,通过-D选项查找:

cmake -B build -DCMAKE_PREFIX_PATH=~/lib/opencv4.9.0_install

查找成功:

 

可以看到,支持子目录查找,就不用精确到具体文件目录了。

另外,在CMakeLists.txt文件中也可以直接设置CMAKE_PREFIX_PATH:

cmake_minimum_required(VERSION 3.0)

project(Demo)

# set(OpenCV_DIR "~/lib/opencv4.9.0_install/lib/cmake/opencv4")
set(CMAKE_PREFIX_PATH "~/lib/opencv4.9.0_install")

find_package(OpenCV 4.9 REQUIRED)
message("find ${OpenCV_VERSION}")

3.通过系统环境变量PATH查找 

gedit ~/.bashrc

在文件底部添加下面一段命令:

export PATH=~/lib/opencv4.9.0_install:$PATH

别忘了在当前终端source一下来重新执行.bashrc脚本,或者新打开一个终端会自动source :

source ~/.bashrc

Path设置的目录支持递归查找

验证一下:

cmake_minimum_required(VERSION 3.0)

project(Demo)


find_package(OpenCV 4.9 EXACT REQUIRED)
message("find ${OpenCV_VERSION}")

GitHub 加速计划 / opencv31 / opencv
77.4 K
55.71 K
下载
OpenCV: 开源计算机视觉库
最近提交(Master分支:3 个月前 )
23fcea0d Missing include directories needed for wayland-util and xkbcommon #26563 See: #26561 ### Pull Request Readiness Checklist See details at https://github.com/opencv/opencv/wiki/How_to_contribute#making-a-good-pull-request - [x] I agree to contribute to the project under Apache 2 License. - [x] To the best of my knowledge, the proposed patch is not based on a code under GPL or another license that is incompatible with OpenCV - [x] The PR is proposed to the proper branch - [x] There is a reference to the original bug report and related work - [ ] There is accuracy test, performance test and test data in opencv_extra repository, if applicable Patch to opencv_extra has the same branch name. - [ ] The feature is well documented and sample code can be built with the project CMake 1 天前
03cedee0 Fixed several cases of unaligned pointer cast 3 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐