opencv安装有两种方式:
1.使用包管理器安装预编译版本(安装十分简单,但是版本只有4.2.0,且没有扩展模块且不支持Qt窗口)
2.从源码安装(比较复杂,但是推荐)
1.安装预编译版本
sudo apt install libopencv-dev
这样就安装完成了
这种安装方法,默认把opencv相关文件放置在系统目录
2.从源码构建安装(重点)
1.OpenCV官网下载源码
官网下载地址https://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}")