Linux系统编译opencv流程
- 版本说明
使用ubuntu14.04, + opencv3.4.6 + opencv_contrib3.4.6 - 配置共享文件夹和调整虚拟机窗口大小
启动ubuntu系统,在菜单栏中点击“虚拟机”选项,选择“安装Vmware Tools”。
在虚拟机中生成以下文件
在ubuntu系统的”home”文件夹中创建一个“VMwareTools”文件夹,将上图中的文件移动至新创建的文件夹中并解压。指令如下:
-
打开终端:ctrl + alt + t。
-
进入超级管理员模式:sudo su,输入设置好的虚拟机启动密码。
-
解压:tar –zxvf VmwareTools-xxx.tar.gz。
-
进入解压后的目录:cd vmware-tools-distrib。
-
运行安装文件:./vmware-install.pl。
-
安装过程中如果提示yes,输入y,如果提示路径,直接按回车即可。
等待安装结束,设置windows系统和ubuntu虚拟机共享文件夹的目录: -
将ubuntu虚拟机关机,点击“编辑虚拟机设置->”选项”->”共享文件夹”。
-
右边窗口选择“总是启用”,点击“添加”按钮,选择windows系统上指定文件夹作为和虚拟机传输文件的共享文件夹。
-
重启虚拟机,可以在ubuntu系统下的/mnt/hgfs目录下看到windows系统中设定的共享文件夹目录。
-
点击“查看”按钮,选择“立即适应客户机”,再按键盘中f11选项,即可自动适应屏幕大小。
完成上述步骤,可随意将windows中的文件拷贝粘贴至虚拟机中。
3.将windows上相关文件夹拷贝至ubuntu系统上
windows系统上将opencv-3.4.6,opencv_contrib-3.4.6,ippicv_2019_lnx_intel64_general_20180723.tgz文件夹拷贝至共享文件夹的目录底下。启动虚拟机,在虚拟机的/mnt/hgfs目录下找到opencv和opencv_contrib文件夹。在终端输入以下指令:
- 打开终端:ctrl + alt + t。
- 进入超级管理员模式:sudo su,输入设置好的虚拟机启动密码。
- 进入共享文件夹路径:cd /mnt/hgfs/。
- 将openc-3.4.6v和opencv_contri-3.4.6b移动至/home目录底下:
mv opencv-3.4.6 /home
mv opencv_contrib-3.4.6 /home - 将 ippicv_2019_lnx_intel64_general_20180723.tgz移动至/home下。
mv ippicv_2019_lnx_intel64_general_20180723.tgz /home
4.安装相关包
首先更新apt-get,安装前先更新系统,否则有可能导致安装失败。指令如下
1) sudo apt-get update
2) sudo apt-get upgrade
更新完毕之后安装必备包:
1) sudo apt-get install build-essential
2) sudo apt-get install cmake git g++
安装依赖包:
1) sudo apt-get install libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
2) sudo apt-get install checkinstall yasm libxine2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libfaac-dev libmp3lame-dev libtheora-dev
3) sudo apt-get install libopencore-amrnb-dev libopencore-amrwb-dev libavresample-dev x264 v4l-utils
图像和视频所需的包:
1) sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng12-dev libtiff5-dev libjasper-dev
2) sudo apt-get install libxvidcore-dev libx264-dev
功能优化:
1) sudo apt-get install libatlas-base-dev gfortran
部分可选依赖包 - sudo apt-get install libopencv-dev qt4-qmake libqglviewer-dev libsuitesparse-dev
- sudo apt-get install python-dev python-numpy
- sudo apt-get install libprotobuf-dev protobuf-compiler
- sudo apt-get install libgoogle-glog-dev libgflags-dev
- sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxyge
5.创建build文件夹及安装cmake-gui
将opencv_contrib-3.4.6文件夹移至opencv-3,4.6目录底下,并创建build文件夹。指令如下: - 进入home文件夹:cd /home
- 将opencv_contrib文件夹移至opencv目录:mv opencv_contrib-3.4.6 /home/ opencv-3,4.6
- 进入opencv-3,4.6文件夹: cd opencv-3,4.6
- 创建build文件夹:mkdir build
- 编辑ippicv.cmake:gedit opencv-3,4.6/3rdparty/ippicv/ippicv.cmake,修改以下内容:
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/”
修改为:
“file:/home/” - 安装cmake-gui:sudo apt-get install cmake-gui
- 启动cmake-gui:cmake-gui
6.cmake操作步骤:
-
选择路径
-
点击configure选择Unix Makefiles
-
在CMAKE_BUILD_TYPE 值处输入RELEASE
-
在OPENCV_EXTRA_MODULES_PATH处,选择输入目录:opencv_contrib文件夹中的modules文件夹
-
勾选BUILD_opencv_world(可不勾选)
-
点击Generate,编译完成。
-
Cmake成功后,可以在build文件下make:
进入build文件夹:cd /home/opencv-3.4.6/build
编译:sudo make –j16
安装:sudo make install
7.配置环境变量
安装成功后设置opencv的环境变量: -
在终端进入:sudo gedit /etc/ld.so.conf.d/opencv.conf
-
添加以下内容:/usr/local/lib/x86_64-linux-gnu
-
添加完之后关闭文档,配置库,在终端输入sudo ldconfig
-
更改环境变量,在终端进入:sudo gedit /etc/bash.bashrc
-
在文档最后添加:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/ x86_64-linux-gnu/pkgconfig
export PKG_CONFIG_PATH
8.运行程序 -
终端输入pkg-config --cflags --libs opencv 查看opencv已装lib信息。
-
创建文件夹,将.cpp程序放进该文件夹中。
-
添加一个CMakeLists.txt文件,内容如下:
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} ) -
在终端进入该文件夹,输入以下指令,生成执行文件(cmake后一个空格+一个点)
cmake .
make
运行上一步生成的执行文件,终端输入以下指令:(xxx为执行文件名字)
./xxx配置成功即可运行程序。
9.安装过程中可能出现的问题 -
sudo apt-get update出现错误:
Err http://security.ubuntu.com precise-security InRelease
Err http://security.ubuntu.com precise-security Release.gpg
Temporary failure resolving ‘security.ubuntu.com’
Err http://cn.archive.ubuntu.com precise InRelease
Err http://cn.archive.ubuntu.com precise-updates InRelease
Err http://cn.archive.ubuntu.com precise-backports InRelease
Err http://cn.archive.ubuntu.com precise Release.gpg
Temporary failure resolving ‘cn.archive.ubuntu.com’
Err http://cn.archive.ubuntu.com precise-updates Release.gpg
Temporary failure resolving ‘cn.archive.ubuntu.com’
Err http://cn.archive.ubuntu.com precise-backports Release.gpg
Temporary failure resolving ‘cn.archive.ubuntu.com’
Reading package lists… Done
W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise/InRelease
W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-updates/InRelease
W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-backports/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/precise-security/InRelease
W: Failed to fetch http://security.ubuntu.com/ubuntu/dists/precise-security/Release.gpg Temporary failure resolving ‘security.ubuntu.com’
W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise/Release.gpg Temporary failure resolving ‘cn.archive.ubuntu.com’
W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-updates/Release.gpg Temporary failure resolving ‘cn.archive.ubuntu.com’
W: Failed to fetch http://cn.archive.ubuntu.com/ubuntu/dists/precise-backports/Release.gpg Temporary failure resolving ‘cn.archive.ubuntu.com’
W: Some index files failed to download. They have been ignored, or old ones used instead.
解决方法:
sudo gedit /etc/apt/sources.list
删除全部内容,把下面的源文件地址复制到该文件中:
deb http://old-releases.ubuntu.com/ubuntu utopic main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu utopic-security main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu utopic-updates main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu utopic-proposed main restricted universe multiverse
deb http://old-releases.ubuntu.com/ubuntu utopic-backports main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu utopic main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu utopic-security main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu utopic-updates main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu utopic-proposed main restricted universe multiverse
deb-src http://old-releases.ubuntu.com/ubuntu utopic-backports main restricted universe multiverse -
make可能报错的地方:
解决方法:从共享文件夹中将以下文件夹拷贝到opencv_contrib-3.4.6/modules/xfeatures2d/src/目录下。
boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i