您的位置:首页 > 运维架构 > Linux

Linux 虚拟机 Ubuntu 16.04 安装 OpenCV 3.0

2016-09-28 20:31 761 查看

Linux 虚拟机 Ubuntu 16.04 安装 OpenCV 3.0

系统条件:

Win10 64位 教育版

VMware Workstation Pro (12 Player)

Ubuntu 16.04-desktop-amd64

安装目标:

OpenCV 3.0.0

安装过程

安装过程要保证全程联网

Ubuntu系统更新

sudo apt-get update
sudo apt-get upgrade


系统更新时间与Ubuntu系统有关系,一般10分钟能搞定。

安装必要组建

安装过程参考了很多教程,如下总结截止到2016年9月28日下的(我能够使用的)最新版本:

sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev qt5-default


需要安装的组件较多,有些教程会给出sh脚本一步安装,但是我本人不是很建议。我在安装以上组件中经,常遇到某组件版本较低被强行停止推荐最新版本的情况。比如libtiff4-dev被替换为libtiff5-dev,libeigen2-dev虽然没有提示,但是后期使用出问题,不得不安装了libeigen3-dev。以及qt5-default也是在之后安装出问题后google到的解决方式。我个人建议别怕累,一个一个安装,利于了解问题的出处。

此处安装根据网速而定,一般预计半小时搞定。

下载OpenCV

http://opencv.org/downloads.html, 选择Version 3.0, OpenCV for Linux/Mac

我选择安装OpenCV3.0 是因为电脑中使用的是Visual Studio 2013和OpenCV3.0,没有更新为VS2015和OpenCV3.1的原因是,习惯了,懒得改。当前的Project结束之后会考虑更改。

解压在/home/opencv-3.0.0

编译OpenCV

在/home/opencv-3.0.0目录下新建build文件夹,进入此文件夹开始cmake:

cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON ..


需要注意的是,这个过程不仅耗时,而且容易出bug。如果中途停止,要仔细检查错误信息,一般错误都来自于之前安装的组件不完整或者不匹配。一般来说重新安装之后就可以正常编译。

另外要观察编译后的结果,要确保FFMPEG没有错误,并且Java, Python, TBB, V4L, OpenGL 和 Qt 被成功检测到(最直观的就是其状态是YES)。

在编译最开始的地方,即OpenCV modules处,提示To be built至少包括以下模块:core flann imgproc highgui features2d calib3d ml video legacy objdetect photo gpu ocl nonfree contrib Java python stitching superres ts videostab viz。顺序可能不同,可能增减。增多没有关系,若有减少,要提前记下,有可能编译虽然成功,但是影响OpenCV之后的正常使用。

安装OpenCV

在/home/opencv-3.0.0 /build目录下:

make
sudo make install


此过程非常非常非常缓慢,而且极其容易出错。make过程出的错都是之前步骤没有做好(组件漏安装、组件版本过旧等等等等)。我自己make了三遍,第一遍在56%的地方停住了,然后发现是qt5的问题,第二遍是因为libeigen3,第三遍正常make。install正常。

此过程看人品,我折腾了一个多小时。

配置环境变量

此过程非常重要!!!此过程非常重要!!!此过程非常重要!!!

sudo gedit /etc/ld.so.conf.d/opencv.conf


在opencv.conf(打开之后是空哒!但是是正确的)里加入如下语句:

/usr/local/lib


之后保存退出。然后配置库文件:

sudo ldconfig


打开另外一个文件:

sudo gedit /etc/bash.bashrc


在文档最下方(fi之后)添加:

PKG_CONFIG_P
4000
ATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH


之后重启虚拟机,,或者注销再登陆。

测试OpenCV

在其他人的教程中,我注意到大家测试samples文件夹里面的代码的时候,测试c或者c++喜欢用~/opencv/samples/c目录下的c文件来测试,并且使用下面的方式

chmod +x build_all.sh
./build_all.sh


但是我并没有在opencv-3.0.0的samples中发现c目录,所以我没有尝试samples下的例子。

想尝试各语言的例子的童鞋,可以参考这篇博文:Installing OpenCV 2.4.9 in Ubuntu 14.04 LTS

我用显示一张图片,来测试OpenCV是否安装成功。

代码

我在/home新建c++,并新建displayTest,用gedit编辑DisplayTest.cpp。

/home/c++/displayTest/DisplayTest.cpp:

#include <stdio.h>
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
int main(int argc, char** argv)
{
Mat image;
image = imread( argv[1] );
namedWindow("Test",CV_WINDOW_AUTOSIZE);
imshow("Test",image);
waitKey(0);
return 0;
}


在include中,我使用OpenCV的头文件的时候,写<>报错,写\core\core.hpp报错,写opencv2/core/core.hpp通过。

编译

编译可以选择命令行或者cmake的方式。

命令行:

g++ DisplayTest.cpp -o DisplayTesy
pkg-config --cflags --libs opencv


注意到此命令中的`不是单引号,而是数字键盘1左边的按键(英文输入法)。

但是,我每次都失败。。所以使用cmake方式。

编辑CMakeLists.txt:

#括号里面的是工程名字,或者说最后生成的可执行文件名
project( FirstDisplayTest )

#cmake的最低版本要求,可以用cmake --version来查看自己的版本
CMAKE_MINIMUM_REQUIRED ( VERSION 3.5 )

if( COMMAND cmake_policy)
cmake_policy (SET CMP0003 NEW)
endif( COMMAND cmake_policy)

#必备步骤
find_package( OpenCV REQUIRED )

#前一项是工程名字,后一项是cpp文件,二者用空格分开
add_executable( FirstDisplayTest DisplayTest

#此处关联OpenCV的库,千万要写对
target_link_libraries( FirstDislayTest $OpenCV_LIBS}


一般来说,第一次编译都会出问题,但是可以手动解决。

编译cmake并运行:

cmake .
make
.\FirstDisplayTest lena.jpg


问题一:找不到库的位置:

把usr/local/include下的opencv和opencv2复制到usr/include

问题二:you should manually point CMake variable OpenCV_DIR to your build of OpenCV library:

这个问题出现在我班里一个男童鞋(萌萌哒的卷毛法国小男Romain)电脑上,重新配置环境变量没用,重启没用,之后找到了这篇博文成功解决掉问题,被Romain看作大神哈哈哈哈哈:

在linux环境下编译运行OpenCV程序的两种方法

这种方法用安装cmake-gui的方式,在图形界面下手动添加OpenCV_DIR的路径,有一种在Linux下用VS添加库路径的feel。

目前我碰到的问题就是这些,以后跟进。

把图片放进工程所在文件夹,运行
.\FirstDisplayTest lena.jpg
,终于第一次在Linux上看到女神lena的照片了!!有一种hello world的萌萌哒的feel肿么破!



参考博文:

Ubuntu 安装OpenCV3.0.0

ubuntu 11.04安装OpenCV2.3

Linux下使用OpenCV

linux下第一个OpencV程序

2016/09/28
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息