赞
踩
第一步:去opencv的github官方代码仓库下载opencv安装包并解压,我下载的是3.5.4版本
https://github.com/opencv/opencv/tree/3.4.3
第二步:更新系统
- sudo apt-get update
- sudo apt-get upgrade
第三步:安装依赖项
依赖项,视情况而定。事实上,OpenCV的依赖项很多,缺少某些依赖项会影响OpenCV部分功能。OpenCV会在make阶段检测依赖项是否会安装,并自我调整功能。如果不知道自己安装了那些依赖,就都输入一遍,如果已经安装系统会自动跳过,不会重复安装
- sudo apt-get install build-essential
- sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
- sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
注意:在这里很容易就出现某个依赖项安装有问题,比如依赖包libjasper-dev安安装就出现了问题
解决方法:
- sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
- sudo apt update
- sudo apt install libjasper1 libjasper-dev
第四步: 安装OpneCV
解压下载下来的OpenCV压缩包,并在终端执行如下程序,安装成功
- cd ~/opencv-3.4.3 # 进入opencv文件夹
- mkdir build # 创建build文件夹
- cd build # 进入build文件夹
- #cmake指令,如果没有特殊要求建议就选择默认的就可以
- #注意,后面的两个点千万不能省,代表了上级目录
- cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
- #我的理解是这cmake把opencv的一些库和可执行文件安装到了系统目录下,方便日后程序调用
- make -j7 # 多线程执行make任务
-
- # 安装库文件
- sudo make install
第五步:在VScode中编写CMakeLists.txt
在主文件夹中新建CMakeLists.txt
CMakeLists.txt内容如下
- cmake_minimum_required(VERSION 3.0)
-
- Project(Test1)
-
- find_package(OpenCV REQUIRED)
-
- ##下面是输出信息
- message(STATUS "Opnecv ;ibrary status: ")
- message(STATUS "> version: ${OpenCV_VERSION} ")
- message(STATUS "libraries: ${OpenCV_LIBS} ")
- message(STATUS "> include: ${OpenCV_INCLUDE_DIRS} ")
-
-
- include_directories(${OpenCV_INCLUDE_DIRS})
-
-
- add_executable(Test2 test.cpp)
-
- 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库):
- <NAME>_FOUND
- <NAME>_INCLUDE_DIRS or <NAME>_INCLUDES
- <NAME>_LIBRARIES or <NAME>_LIBRARIES or <NAME>_LIBS
- <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并进入。
- mkdir build
- cd build
现在项目的树状图如下:
- ├── 1.jpg #图片
- ├── build #现在还是空的
- ├── CMakeLists.txt #我们需要编写的文件
- └── test.cpp #和1中的cpp一样,不需要改动
-
- 1 directory, 3 files
在打开终端输入cmake
紧接着输入make,即可生成可执行文件
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。