在Ubuntu下安装Open CV + Python 开发环境
最近感觉有点脑子不够用,学过的东西长期不用的话很快就会忘记,趁着这段时间把之前学的东西都整理下,也算是对之前的技术做个回顾和总结。
今天介绍如何在Ubuntu下安装Open CV + Python的开发环境。opencv是一个十分强大的图像处理以及机器视觉算法库,它支持Java,C++,以及Python。
目前可以在Android可以很轻松得搭建开发环境了,这个会在后续的文章中予以介绍,之所以选择Python是因为简单,花一个下午就就可以把常用的语法给过一遍了,但是后来发现深入进去还是有的学的,后续打算以OpenCV + python作为一个专题介绍下图像处理中的一些技术。
好了,进入正题:
首先运行下如下的命令,更新下软件库
$ sudo apt-get update
$ sudo apt-get upgrade安装开发必要的工具,下面的这些,比如git 如果大家的系统上已经安装好了就不用安装了
sudo apt-get install build-essential cmake git pkg-config
为了能够加载 JPEG, PNG, TIFF这些格式的图片,需要安装这些格式的图片读写包:
sudo apt-get install libjpeg8-dev libtiff4-dev libjasper-dev libpng12-dev |
图像显示的话我这里选择的是 GTK 开发库,执行如下命令安装:
sudo apt-get install libgtk2.0-dev
为了能够处理视频流我们需要安装如下的包:
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
下面这个不是很清楚,当时笔记上的,先装上吧:
sudo apt-get install libatlas-base-dev gfortran
安装pip 是用于安装Python包的工具
wget https://bootstrap.pypa.io/get-pip.py && sudo python get-pip.py
使用上面安装的Pip 安装virtualenv,virtualenvwrapper这个有助于你创建独立的Python开发环境:
sudo pip install virtualenv virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
source ~/.bashrc创建一个独立的开发环境
mkvirtualenv cv
安装Pyhon 2.7
sudo apt-get install python2.7-dev
由于需要涉及到多维数组的运行所以需要使用pip 安装 numpy库
pip install numpy
安装opencv 3.0
cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.0.0
cd ~
git clone https://github.com/Itseez/opencv_contrib
cd opencv_contrib
git checkout 3.0.0使用cmake编译opencv
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_PYTHON_EXAMPLES=ON \
-D BUILD_EXAMPLES=ON ..
make -j4
这时候有可能会报如下错误:
/usr/bin/ld: /usr/local/lib/libavcodec.a(avpacket.o): relocation R_X86_64_32 against `.rodata.str1.1’ can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/libavcodec.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libopencv_videoio.so.3.0.0] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make: *** [all] Error 2
这是由于你当时编译ffmpeg的时候方式不对,参考如下结合方法:
I had the same problem while compiling opencv3 alpha on Ubuntu 14.04 with FFMPEG enabled. My FFMPEG was the git version compiled with
./configure
make
sudo make install
I had to recompile FFMPEG with
./configure –enable-nonfree –enable-pic –enable-shared
That did the trick for me and after that opencv3 compiled fine.
在安装过程中还有可能会遇到如下错误:
/home/jimmy/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp: In member function ‘bool OutputMediaStream_FFMPEG::open(const char*, int, int, double)’:
/home/jimmy/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp:2150:41: warning: ignoring return value of ‘int avformat_write_header(AVFormatContext*, AVDictionary**)’, declared with attribute warn_unused_result [-Wunused-result]
avformat_write_header(oc_, NULL);
^
make[2]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/src/cap_ffmpeg.cpp.o] Error 1
make[1]: *** [modules/videoio/CMakeFiles/opencv_videoio.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs….
Linking CXX shared library ../../lib/libopencv_shape.so
[ 47%] Built target opencv_shape
make: *** [all] Error 2
这是由于我在上面重装ffmpeg的时候安装的是最新的3.0版本导致部分方法不兼容,我这边ffmpeg安装回2.3版本就可以了
这时候还有可能发现在终端敲ffmpeg的时候会报如下错误:
ffmpeg: error while loading shared libraries: libavdevice.so.55: cannot open shared object file: No such file or directory
解决办法:
运行:
sudo vim /etc/ld.so.conf |
在文件的最后添加
/usr/lib |
运行:
ldconfig |
- 编好后就安装吧
sudo make install |
但是我们的cv虚拟环境是在我们的home目录下,所以要在虚拟环境下使用OpenCV,我们还得将opencv 链接到这个地方。
cd ~/.virtualenvs/cv/lib/python2.7/site-packages/ |
- 测试下:
$ workon cv |