装过好几次openCV,是时候写点东西记录下来了,省的下次好久不装忘了又得去百度(百度上的安装方法众说纷纭还都不一样),形成自己的一套方法,越简单越好
参考了一篇文章http://www.cnblogs.com/jeakon/archive/2013/05/08/3066469.html
但是我会说得更细致一些,有点长,凑合着看。。。
文章是opencv装好了之后才想着要写的,所以没有配很多图,下次装再补上吧。而且凭记忆写的不知道有没有错误,应该没有吧,,,都装过四五次了
本来只有opencv,然我大思飞培训是用python+cv,就加了py的部分。
-----------------------------------------------------------------------------------------------------
第一步装好python和numpy等,异常简单
update是更新软件源
upgrade是按照最新的源进行更新
build-essential是编译开发的一套环境
装软件前这三步是最基础,一定要注意更新
sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential
默认的python是python2.7.9
numpy和scipy什么的是啥,,,自行百度在此不赘述
sudo apt-get install python-numpy sudo apt-get install python-scipy sudo apt-get install python-matplotlib
然后测试
python import numpy import scipy import pylab numpy.test() scipy.test() pylab.test()
---------------------------------------------------------------------------------
第二步:当然是下载openCV
官网我就不说了http://opencv.org
下载之后在Download文件夹下
然后我在用户目录下建了个Software文件夹,再在里面建个openCV文件夹
mkdir ./Software mkdir ./Software/openCV
然后把刚才下载的opencv压缩文件拷进去并进入目录查看
mv ./Downloads/opencv-3.0.0.zip ./Software/openCV/ cd ./Software/openCV/ ls
就会看见有个opencv-3.0.0.zip
然后unzip解压,解压出来之后会看到一个opencv-3.0.0文件夹
unzip ./opencv-3.0.0.zip cd ./opencv-3.0.0 ls
好了我们可以看到一堆东西,这是解压后的openCV,都是源码呢,还需要编译才能使用。
-----------------------------------------------------------------
第三步,安装编译工具Cmake
因为openCV解压出来都是源码是需要自己用Cmake编译的呀~
首先去Cmake官网上找个。http://cmake.org/
进去之后选个版本,我选的是最新版本
选了之后就会有下面这个界面
这里我们要选择Binary distributions,因为source distributions是要用cmake编译的,而我们电脑上之前并没有cmake
这里我选择的是linux x86_64中间的那个,后缀.tar.gz
下载了binary之后就是copy,然后解压缩,用的解压命令是tar,选项是zxvf
解压之后我们还要用它呢,怎么用,我们进入安装文件夹下的可执行文件夹看看
tar zxvf ./cmake-3.4.1-Linux-x86_64.tar.gz cd ./cmake-3.4.1-Linux-x86_64/bin/
可以看到bin文件夹下有很多可执行文件,我们使用cmake、cmake-gui等等都是从这里执行
那么到了这,我们该如何使用cmake
关于cmake的使用,其实可以说很多,但是在这里并不需要很多相关的知识,我们只作了解
在linux下编译一个工程需要用make命令,而make命令需要一个名为Makefile的文本来指定编译的规则。然而Makefile是很难写的,所以我们需要用cmake来创建这个Makefile
用cmake编译程序,需要一个CMakeLists.txt,这个和Makefile一样是用来指定编译规则,只是比较容易写
简单地说,编译工程时先根据CMakelists.txt来创建Makefile,再根据Makefile编译整个工程
后面编译openCV的时候再回头说这个
一会会用到两个命令
cmake
make
然而如果系统不知道在哪安装了cmake就无法用这两行指令调用cmake
让系统知道你的程序在哪最好的办法就是给程序的可执行文件添加环境变量
sudo gedit /etc/profile
etc目录下的这个profile是可以用来设置环境变量的,如果你以前设置过就会看到像下面那样的东西
如果有这些的话那么把你cmake下bin目录的完整路径copy过来,在“PATH=”后的引号里,最后加一个冒号,再把刚才的bin路径放在后面(中间不能有空格,否则不能识别),冒号是为了分开各个路径
如果没有就把下面这几行复制进去
PATH="$PATH:" export PATH
$PATH:后面填上你的cmake的bin目录地址,我的是/home/canpi/Software/Cmake/cmake-3.4.1-Linux-x86_64/bin
完成后保存。(如果用gedit打开的时候没用root是没法保存的哦)
然后运行一下
source /etc/profile
使刚才在这个文件里的修改生效
然后随便进入一个目录,假设是
cd /home/canpi/
进入了用户目录之后测试一下
cmake-gui
如果能看到cmake的图形界面,就说明环境变量配置成功
---------------------------------------------------------------
第四步,编译opencv
编译之前我们需要安装很多opencv使用时需要的一些东西
sudo apt-get install build-essential libgtk2.0-dev pkg-config python-dev libavcodec-dev libavformat-dev libswscale-dev python-opencv python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
其实我感觉这种东西是添加不完的,我就是先装好了opencv然后用的时候碰到了什么问题,报错了再来安装缺少的东西
cd到opencv解压的目录下
cd /home/canpi/Software/openCV/opencv-3.0.0/
ls一下可以看到目录下有CMakeLists.txt,有了这个神奇的东西就可以开始编译整个当前目录了
说一下,将编译后的文件和源码放在一起是很不好的习惯,所以我们在opencv目录下建一个release目录,将编译后的东西都放进去
mkdir ./release
cd ./release
刚才说到cmake命令的用法,cmake后面加上CMakelists.txt所在的目录就行了,中间可以加入一些选项
我们现在在release目录下,所以要在上一级目录..下编译
然后有一些编译选项,CMAKE_BUILD_TYPE=RELEASE是编译类型为release,CMAKE_INSTALL_PREFIX=/usr/local是安装位置在/usr/local
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
make //根据Makefile编译
sudo make install //将make生成的文件安装到系统目录中
ok,编译过程虽然缓慢,但是到这里已经接近尾声了
(装了cuda再装opencv这个编译简直长得让人心疼)
再多嘴一句,opencv是个很屌的东西,包含了各种库,但是有时候会碰到需要重新编译的地方。
打个比方,我之前装了opencv,然后前几天装了cuda。一开始装opencv的时候电脑里没有cuda所以他没有编译cuda需要的东西。为了让opencv和cuda能很好地兼容,我只好装完cuda再编译一次opencv。
----------------------------------------------------------------------
最后一步,添加环境变量,使系统知道opencv库在哪调用
首先我们cd到某个目录下ls看看
cd /usr/local/lib
ls
这里一堆东西都是opencv依赖的库,安装的时候弄进来的,我们需要在opencv的配置文件里添加进这个目录
sudo gedit /etc/ld.so.conf.d/opencv.conf
在末尾加入/usr/local/lib (如果文件是空的也没关系,创建的结果是一样的)
保存退出
sudo ldconfig
ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件
然后我们把/usr/local/lib/pkgconfig加进环境变量,就像上面把cmake/bin加进去一样操作
安装完成
---------------------------------------------------------------------
最后应该测试一下
cd /home/canpi/Software/openCV/opencv-3.0.0/samples/cpp/example_cmake
cmake .
make
生成可执行文件opencv_example
运行
oh,nice~这是个打开摄像头的程序
再进入python的示例
cd ../../python
ls
./opt_flow.py
光流异常帅气
thanks