Installation of Opencv, numpy, scipy inside a virtualenv
Useful for python server side deployments that need computer vision
I cross posted the same post here. Because Medium is screwing up the code snippets. For example the single quote character is screwed up. Please contact me there for any questions.
I did this for a ubuntu 13.04 server. This should work for 12.10 without much of a problem
Activate the virtualenv
source bin/activate
# or
workon <environment_name>
For numpy and scipy it’s fairly simple
pip install numpy scipy
You can go by two approaches. One is to install opencv globally in your system and then moving those libraries to your virtualenv. This approach has some shortcomings. The globally installed opencv might have been compiled for a different version of python. It gets difficult during deployment to point to the right environment.
Copy globally installed opencv into your virtualenv
Use this incase you want to copy your system installed opencv over to your virtualenv. In the virtualenv you make for your project, do the following
Copy cv.* (from OpenCV-2.2.0/lib directory) to the virtualenv site-packages
cp /usr/lib/pymodules/python2.7/cv* $VIRTUAL_ENV/lib/python2.7/site-packages/
Again, I have seen this approach used only by an intern. I can’t vouch for it’s reliability.
The second approach mitigates some of those problems. Thanks to some helpful people on the web, I could figure out how to install OpenCV inside a virtualenv without touching the global python
Dependencies
For opencv, there are system dependencies which can be installed like so,
sudo apt-get install cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-devlibswscale-dev libamd2.2.0 libblas3gf libc6 libgcc1 libgfortran3 liblapack3gf libumfpack5.4.0 libstdc++6 build-essential gfortran libatlas-dev libatlas3-base libblas-dev liblapack-dev libjpeg-dev libpng-dev libtiff-devlibjasper-dev
Download opencv, build it and install it
- Downloading
Navigate to a folder to download opencv and download it
# change to target directory
cd ~/download_directory
wget -Oopencv-2.4.5.tar.bz2 http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.5/opencv-2.4.5.tar.gz?ts=1371369803&use_mirror=jaist# unzip
tar xvf opencv-2.4.5.tar.bz2
- Building it
Now make sure that your virtual environment is activated and then execute this command.
cd opencv-2.4.5/
mkdir release
cd release# notice that in the command below,
# -D INSTALL_PYTHON_EXAMPLES=ON
# is optional.cmake -D MAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV/local/ -D PYTHON_EXECUTABLE=$VIRTUAL_ENV/bin/python -D PYTHON_PACKAGES_PATH=$VIRTUAL_ENV/lib/python2.7/site-packages -D INSTALL_PYTHON_EXAMPLES=ON ..
- Installing it
make -j8
make install
Testing if everything went right
Get into python shell and try the following commands
# enter python shell
# make sure your environment is activated
python
now inside the shell, try the following imports
import cv
import cv2
import numpy
import scipy
these imports shouldn't throw any error
Later, you might run into a decoder error. As a precaution, reinstall Pillow
pip freeze | grep Pil # to find the Pillow version we're usingpip -I install Pillow==2.0.0 # or whichever version you find from the step above