最近空闲时间比较多,打算仔细看看opencv的源码,做个笔记。
opencv的安装一般分为两种方式:
- 安装包直接安装
- 源码编译安装
命令行安装较为简单,本文主要介绍使用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