当前位置:   article > 正文

ubuntu20.04安装opencv

ubuntu20.04安装opencv

第一步:去opencv的github官方代码仓库下载opencv安装包并解压,我下载的是3.5.4版本

https://github.com/opencv/opencv/tree/3.4.3

 第二步:更新系统

  1. sudo apt-get update
  2. sudo apt-get upgrade

第三步:安装依赖项 

依赖项,视情况而定。事实上,OpenCV的依赖项很多,缺少某些依赖项会影响OpenCV部分功能。OpenCV会在make阶段检测依赖项是否会安装,并自我调整功能。如果不知道自己安装了那些依赖,就都输入一遍,如果已经安装系统会自动跳过,不会重复安装 

  1. sudo apt-get install build-essential
  2. sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  3. sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

注意:在这里很容易就出现某个依赖项安装有问题,比如依赖包libjasper-dev安安装就出现了问题  

解决方法: 

  1. sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
  2. sudo apt update
  3. sudo apt install libjasper1 libjasper-dev

第四步: 安装OpneCV

解压下载下来的OpenCV压缩包,并在终端执行如下程序,安装成功

  1. cd ~/opencv-3.4.3 # 进入opencv文件夹
  2. mkdir build # 创建build文件夹
  3. cd build # 进入build文件夹
  4. #cmake指令,如果没有特殊要求建议就选择默认的就可以
  5. #注意,后面的两个点千万不能省,代表了上级目录
  6. cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
  7. #我的理解是这cmake把opencv的一些库和可执行文件安装到了系统目录下,方便日后程序调用
  8. make -j7 # 多线程执行make任务
  9. # 安装库文件
  10. sudo make install

第五步:在VScode中编写CMakeLists.txt

在主文件夹中新建CMakeLists.txt

CMakeLists.txt内容如下

  1. cmake_minimum_required(VERSION 3.0)
  2. Project(Test1)
  3. find_package(OpenCV REQUIRED)
  4. ##下面是输出信息
  5. message(STATUS "Opnecv ;ibrary status: ")
  6. message(STATUS "> version: ${OpenCV_VERSION} ")
  7. message(STATUS "libraries: ${OpenCV_LIBS} ")
  8. message(STATUS "> include: ${OpenCV_INCLUDE_DIRS} ")
  9. include_directories(${OpenCV_INCLUDE_DIRS})
  10. add_executable(Test2 test.cpp)
  11. target_link_libraries(Test2 ${OpenCV_LIBS})

解释:

第一行cmake_minimum_required(VERSION 2.8):该命令指定了编译该工程对cmake的最高、最低版本要求,如果 CMake 的运行版本低于所需版本,它将停止处理项目并报告错误。

第二行project不是强制性的,最好加上,这会引入两个变量:Test1_BINARY_DIR, Test1_SOURCE_DIR,同时也会定义两个等价的变量:PROJECT_BINARY_DIR, PROJECT_SOURCE_DIR,外部编译要时刻区分这两个变量对应的目录。可以通过message进行输出,message(${PROJECT_SOURCE_DIR})

第三行find_package:CMake 本身不提供任何关于搜索库的便捷方法,也不会对库本身的环境变量进行设置。它仅仅是按照优先级顺序在指定的搜索路径进行查找 Findxxx.cmake 文件和xxxConfig.cmake文件(其中xxx代表库的名字,特别注意的是有大小写之分),这两个文件大体上是没有区别的,CMake 能够找到这两个文件中的任何一个,我们都能成功使用该库,当我们在终端键入 cmake.. 命令之后,CMake 会读取并执行 CMakeLists.txt 中的代码,当执行 find_package() 这条命令后,CMake 就会从某些路径中找这 Findxxx.cmake 文件或者xxxConfig.cmake 文件,CMake 找到任意一个之后就会执行这个文件,然后这个文件执行后就会设置好一些 CMake 变量。比如下面的变量(NAME 表示库的名字 比如可以用 Opencv 代表 Opencv库):

  1. <NAME>_FOUND
  2. <NAME>_INCLUDE_DIRS or <NAME>_INCLUDES
  3. <NAME>_LIBRARIES or <NAME>_LIBRARIES or <NAME>_LIBS
  4. <NAME>_DEFINITIONS

一般常用的就是 xxx_FOUND 、xxx_INCLUDE_DIRS、xxx_LIBS,分别代表是否找到库的标志、库的头文件路径、库文件路径。由于我们在一开始安装OpenCV的时候默认安装在了系统目录下,所以能找到。参数REQUIRED表示没找到的话就不忘下继续运行

第四行以后的输出信息:输出所用到的OpenCV版本信息以及库的路径等,在cmake命令运行之后输出

第八行include_directories:将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径,也就是告诉cpp它的各种include的搜索路径为${OpenCV_INCLUDE_DIRS}

第九行add_executable(Test2 test.cpp):使用指定的源文件来生成目标可执行文件。注意这里的名字可以和项目名字不一样,为做区分我写为Test2

第十行:target_link_libraries(Test2 ${OpenCV_LIBS}):该指令的作用为将目标文件与库文件进行链接,一些动态连接库需要在程序运行阶段才被调用(我个人理解),因此这里也是Test2,需要和可执行文件名称一样

第六步:在项目中新建文件夹build并进入。

  1. mkdir build
  2. cd build

现在项目的树状图如下:

  1. ├── 1.jpg #图片
  2. ├── build #现在还是空的
  3. ├── CMakeLists.txt #我们需要编写的文件
  4. └── test.cpp #和1中的cpp一样,不需要改动
  5. 1 directory, 3 files

在打开终端输入cmake

紧接着输入make,即可生成可执行文件 

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号