ubuntu16.04环境下opencv3.4.8 源码编译安装

最近空闲时间比较多,打算仔细看看opencv的源码,做个笔记。

opencv的安装一般分为两种方式:

  1. 安装包直接安装
  2. 源码编译安装

命令行安装较为简单,本文主要介绍使用cmake进行源码编译安装。
因为使用的远程服务器,所有操作没有可视化界面,都是在终端命令行。

目录

1、CMake安装

CMake工具是opencv官方推荐的源码编译工具。安装教程

查看cmake版本号
在这里插入图片描述

2、opencv3.4.8 源码下载

github选择需要的版本下载,链接
在这里插入图片描述

3、源码编译流程

(1)configure/cmake

用来检测安装平台的目标特征,比如检测你是不是安装有GCC等,并不会实际进行编译。
通常一个大型项目的Makefile文件是十分复杂的,写Makefile非常麻烦,所以开发出了一种CMake工具,它能够输出各种各样的makefile或者project文件,从而帮助程序员减轻负担。但是随之而来也就是编写cmakelist文件,它是cmake所依据的规则。
make和cmake的区别
在这里插入图片描述

(2)make

make用来编译的,它是一个自动化编译工具。从Makefile文件中读取指令,然后根据设置的编译选项进行编译。

(3)make install

用来安装的,也是从Makefile文件中读取指令,安装到指定的位置。

4、opencv源码编译

cd opencv-3.4.8
mkdir build
cd build 
cmake ..      // configure 配置 
make -j8      // make  编译
sudo make install  // make install 安装

4.1 编译出现错误

错误如下:
在这里插入图片描述在这里插入图片描述

这种错误的根本原因:
configure时没有支持OpenGL,编译opencv库时用到了OpenGL中的变量。所以导致出错。
可以通过添加

-D WITH_OPENGL=ON

解决这个问题。
但是又出现了,如下问题
在这里插入图片描述
如错误提示,添加

-D WITH_QT=ON

最后的configure命令可以写成

 cmake -D WITH_QT=ON -D WITH_OPENGL=ON ..

也可以写成下面,方便理解

cmake -D CMAKE_BUILD_TYPE=RELEASE \    #编译模式,release/debug, 默认为release
	  -D CMAKE_INSTALL_PREFIX=/usr/local \ #安装路径
	  -D WITH_TBB=ON \                #Include Intel TBB support(Intel开发的并行编程开发工具),默认为off
	  -D BUILD_TIFF=ON \              #Build libtiff from source(一种灵活的位图格式),默认为ON
	  -D WITH_V4L=ON \                #支持Vedio4Linux(是Linux中关于视频设备的内核驱动,为针对视频设备的应用视频设备的应用程序提供一系列接口函数,这些视频设备包括TV卡、视频捕捉卡和USB摄像头等,对于USB摄像头,其驱动程序中需要提供基本的I/O操作用于open、read、write、close函数的实现),默认为ON
	  -D INSTALL_C_EXAMPLES=ON \      #Install C examples, 默认为off
	  -D INSTALL_PYTHON_EXAMPLES=ON \ #Install Python examples, 默认为off
	  -D BUILD_EXAMPLES=ON \          #Build all examples, 默认为off
	  -D WITH_QT=ON \                 #支持QT(c++图像用户界面开发框架,多用于开发GUI),默认为off
	  -D WITH_GTK=ON \                #支持跨平台通用图形工具包GTK, 默认为on
	  -D WITH_OPENGL=ON \             #支持开放图形库OpenGL,默认为off
	  ..

5、测试是否安装成功

5.1 运行命令:

pkg-config --cflags --libs opencv 

出现下面信息
在这里插入图片描述

5.2 运行程序

生成可执行程序

g++ rgb2gray.cpp -o test `pkg-config --cflags --libs opencv`

执行文件

./test

如果出现找不到so文件的错误,那是动态链接库的路径没有添加好,可按下面的方式添加:

  • 1、用vim打开/etc/ld.so.conf,注意要用sudo打开获得权限,不然无法修改,如:sudo vim
    /etc/ld.so.conf,在文件最后中加上一行 /usr/local/lib

  • 2、运行:
    sudo ldconfig

  • 3、修改bash.bashrc文件:
    sudo vim /etc/bash.bashrc

  • 4、在文件末尾加入:
    PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
    export PKG_CONFIG_PATH

  • 5、最后执行:
    source /etc/bash.bashrc

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章