一:ubuntu14.04下配置OpenCV3.3.0和Python2.7

来源:互联网 发布:软件外包接单 编辑:程序博客网 时间:2024/06/06 09:52

*原文章

以前一直有想学习Opencv的冲动,但是一直没有实践起来,随着我学习Python的脚步,我想通过一边做opencv的案例来增强我的python编程功底

首先我使用的是ubuntu14.04+OpenCV3.3.0+Python2.7

在Ubuntu下:

Step 1.执行update和upgrade

sudo apt-get update (update 是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。)

sudo apt-get upgrade (upgrade 是升级已安装的所有软件包,升级之后的版本就是本地索引里的,因此,在执行 upgrade 之前一定要执行 update, 这样才能是最新的。)


Step 2.安装开发工具

sudo apt-get install bulld-essential cmake git pkg-config需要安装build-essential,才能使用gcc/g++,编译程序必须的软件包

build-essential:

注意:查看软件包的依赖关系

$apt-cache depends build-essential

查看了解到,安装了该软件包,编译c/c++所需要的软件包也都会被安装,如果想编译c/c++就需要安装该软件包

cmake:

gcc用于编译程序,如果把gcc编译程序的整条命令放入makefile中,执行make,此时就会执行makefile中的所有命令

cmake就是用来生成Makefile文件的工具,它是依据CMakeLists.txt文件去生成makefile

*1.gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。
2.当你的程序只有一个源文件时,直接就可以用gcc命令编译它。
3.但是当你的程序包含很多个源文件时,用gcc命令逐个去编译时,你就很容易混乱而且工作量大
4.所以出现了make工具make工具可以看成是一个智能的批处理工具,它本身并没有编译和链接的功能,
而是用类似于批处理的方式—通过调用makefile文件中用户指定的命令来进行编译和链接的。
5.makefile是什么?简单的说就像一首歌的乐谱,make工具就像指挥家,指挥家根据乐谱指挥整个乐团怎么样演奏,
make工具就根据makefile中的命令进行编译和链接的。
6.makefile命令中就包含了调用gcc(也可以是别的编译器)去编译某个源文件的命令。
7.makefile在一些简单的工程完全可以人工手下,但是当工程非常大的时候,手写makefile也是非常麻烦的,如果换了个平台makefile又要重新修改。
8.这时候就出现了Cmake这个工具,cmake就可以更加简单的生成makefile文件给上面那个make用。
当然cmake还有其他功能,就是可以跨平台生成对应平台能用的makefile,你不用再自己去修改了。
9.可是cmake根据什么生成makefile呢?它又要根据一个叫CMakeLists.txt文件(学名:组态档)去生成makefile。
10.到最后CMakeLists.txt文件谁写啊?亲,是你自己手写的。
11.当然如果你用IDE,类似VS这些一般它都能帮你弄好了,你只需要按一下那个三角形

pkg-config

返回已安装库文件的元信息。

有时候我们想适用第三方库,就需要使用到他们的头文件和库文件,在编译、链接的时候,必须指定这些文件的位置

对于一个比较大第三方库,其头文件和库文件的数量是比较多的。如果我们一个个手动地写,那将是相当麻烦的

pkg-config就应运而生了。pkg-config能够把这些头文件和库文件的位置指出来,给编译器使用。

例如:$gcc main.c `pkg-config --cflags --libs gtk+-2.0` -o main(把gtk的头文件路径和库文件列出来,让编译去获取,--cflags和--libs分别指定头文件和库文件)


Step 3.安装I/O packages,因为OpenCV需要从硬盘中加载多种图片格式,例如:jpeg, png, tiff etc.

sudo apt-get install + 

libjpeg8-dev

libtiff4-dev

libjasper-dev

libpng12-dev


Step 4.如果想显示真实的图片在屏幕上,就需要安装gtk包(gik是linux下开发图形界面的应用程序的主流开发工具之一)

sudo apt-get install libgtk2.0-dev


Step 5.为了处理视频流和单个帧,需要安装如下库:

sudo apt-get install +

libavcodec-dev

libavformat-dev

libswscale-dev

libv4l-dev


Step 6.安装优化OpenCV的库

sudo apt-get install libatlas-base-dev gfortran


Step 7.安装Python的包管理工具

wget https://bootstrap.pypa.io/get-pip.py

sudo python get-pip.py


Step 8.安装virtualenv和virtualenvwrapper,这可以使我们为每个python项目创建单独的环境

sudo pip install virtualenv virtualenvwrapper

sudo rm -rf ~/.cache//pip


*更新 ~/.bashrc file文件,在文件尾部添加如下行:

#virtualenv and virtualenvwrapper

export WORKON_HOME=$HOME/.virtualenvs

source /usr/local/bin/virtualenvwrapper.sh


*是.bashrc文件生效

$source ~/.bashrc


*接下来我们建立虚拟环境,用于OpenCV3.3+Python2.7+的安装

mkvirtualenv cv(建立虚拟环境)


Step 9.安装Python2.7

$sudo apt-get install python2.7-dev    

$pip install numpy *在虚拟环境中,安装numpy)


(以上步骤基本完成了环境的搭建,接下来就开始安装Opencv)


*以下的步骤安装可以不用切换到虚拟环境中,基本就是opencv的编译与安装,后安装好后,就会在/usr/local中查找到cv2.so文件,这是如果想在自己独立的虚拟环境中进行Opencv项目的开发,就需要把该cv2.so链接到你的虚拟环境的库路径下的目录里。


Step 10.获取OpenCV、opencv_contrib from Github

$cd ~

$git clone git@github.com:Itseez/opencv.git

$cd opencv

$git checkout 3.3.0(此步一定要与Opencv.org官网中最新版本对应)

-------------------------------------------------------------------------------------------

$cd ~

$git clone git@github.com:Itseez/opencv_contrib.git

$git opencv_contrib

git checkout 3.3.0(此步获取的版本要与以上OpenCV的版本一致)


获取了以上另个文件后,就要开始build了:

$cd ~/opencv

$mkdir build

$cd build

$cmake -D CMAKE_BUILD_TYPE = RELEASE \

-D CMAKE_INSTALL_PREFIX = /usr/local \

-D INSTALL_C_EXAMPLES = ON \

-D INSTALL_PYTHOB_EXAMPLES = ON \

-D OPENCV_EXTRA_MODULES_PATH = ~/opencv_contrib/modules \ 

-D BUILD_EXAMPLES = ON ..


CMAKE需要一定时间,耐心等待,如果完成以上CMAKE后,就要开始编译OpenCV:

$make -j4(j代表线程,-j4代表用4个线程同时编译)


完成了编译后,就开始安装:

$sudo make install

$sudo ldconfig


*如果完成了以上步骤而没有出错的话,OpenCV已经被安装在了以下路径:

*/usr/local/lib/python2.7/site-packages


Step 11.与已经安装的OpenCV建立符号链接,方便我们虚拟环境使用

$cd ~/.virtualenvs/cv/lib/python2.7/site-packages/

$ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so(由于Opencv被安装到了/usr/local当中,如果我们想在虚拟环境中使用该Opencv包,就需要把OpenCV包链接到该虚拟环境的包路径中,这样当我们在虚拟环境中,才可以使用Opencv包,否则不行)


完成了以上的所有步骤,证明你已经成功安装了OpenCV3.3和Python2.7

检查你是否成功安装:

$workon cv (进入自己独立虚拟环境)

$python 

import cv2

cv2.__version__

显示:'3.3.0',则代表成功安装