Ahhh, computer vision, such a cool field! Lately, I’ve been trying to become more knowledgeable about CV and image processing in python. OpenCV (CV = ‘computer vision’) is an excellent open source computer vision software library written in C++ that supports C++, C, Python, Java, and Matlab API’s. OpenCV will supply you with functions that will let you detect faces in images, track objects in a video, and perform any number of image processing tasks.
The only problem is: how the hell do I install OpenCV so that I can use it in conjunction with a Jupyter notebook? Let’s be honest, most likely you’re either you’re using a Jupyter notebook, Spyder, or the ipython terminal (if you’re a real sadist) to test your python code. And especially if you’re coding for image processing, you’re going to want to view your progress without having (a) a million separate images open and (b) having to wait for Spyder to inevitably crash. That’s the beauty of a Jupyter notebook - when you’re using it with Matplotlib, you can just display your images and videos in a living document!
For me, my ideal OpenCV situation would be for me to be able to simply type and evaluate the following
import statements with zero errors or package conficts:
Problems with traditional installation methods
Conda install -c anaconda spyder Description Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts. Installing Anaconda and Python This is a brief guide on how to install Anaconda and Python on your PC. We recommend having it installed on your own machine to follow along programming tasks in lectures and for assignments and labs. Anaconda will setup Python for programming and an editor (Spyder) to help write those programs.
There are many ways to install OpenCV. The standard approach is to download it from the OpenCV website and then compile and install OpenCV using the software building utility “CMake” all within a virutal Python environment. I’ve gone down this route according to Adrian Rosebrock’s fabulous installation walkthrough, and if you just want to have access to OpenCV 3.0, I suggest you consider it. But, at the end of the day, there are even more steps required after Adrian’s 9 steps to get OpenCV compatible with a Jupyter notebook. Other installation walkthroughs I’ve found tend to be generally convoluted and assume that you have Homebrew, XCode, maybe MacPorts, or just experience in general with installing and building software packages. Wouldn’t it be great if we could just run something analogous to
pip install opencv?
If you’re like me (maybe you’re not) I often think that
pip install‘ing a Python package is the same thing as R’s
install.packages function - while we get similar functionality, R packages come with the luxury of basically never interfering with other R package dependencies! If one package needs a newer or older version of some other package you’ve already installed,
install.packages will most likely just take care of everything for you. Python packages, on the other hand, will often have dependencies on specific versions of other packages, so if you
pip install one package, other package may fail to import because their dependent packages have been updated. That’s why we use virtual environments; my favorite method for creating and running virtual environments is with Anaconda, a Python distribution that comes with Sklearn, Scipy, NumPy, Jupyter notebook, and most of the other essential tools a data scientist needs when using Python.
Overall, I installed OpenCV cleanly in just a few steps:
- Install Anaconda, make Anaconda’s Python your system’s default Python (skip if you already have this).
- Create a virtual environment.
- Make sure all Conda packages are up-to-date.
conda install -c https://conda.binstar.org/menpo opencv
(1) Install Anaconda. (Skip if you already have Anaconda).
First off, I’m still a python 2 guy. Yeah, there’s python 3, but I grew up on Py 2.7 and it’ll take a lot to pry it from my cold, dead hands. So I have a python 2.7 Anaconda environment running on my computer. Your choice.
I went to the Anaconda downloads page and got the Python 2.7 Mac OS X 64-Bit command-line installer, so that we can install everything from Terminal.
After downloading that, navigate to your Downloads directory (if you’re new to the Terminal, just open the Terminal application and type
While still in Terminal, enter
Awesome, now you’ve downloaded and installed Anaconda.
(1.b) Make Anaconda your default python installation.
For data science, Anaconda rules. Ideally, when you’re in Terminal and you type
python, you’d like for the Anaconda python installation to be the default python that starts running instead of what comes installed by default on a typical Macbook. Why? Well, using Anaconda we can just import NumPy, import any Scikit Learn funciton, import Matplotlib, etc.
To see what I’m talking about, type this in Terminal:
If you get
/usr/bin/python2.7, you’re not using the Anaconda installation. To change this, you’ll need to change your bash_profile so that the default path to the python installation in the Anaconda directory. If you don’t have a .bash_profile file in your home directory, do this:
This just created that file. Next, open the .bash_profile page and add this line:
Finally, you have to make your system update python path the with your new settings, so in Terminal type
Secure delete for mac.
(2) Make an Anaconda virtual environment
Anaconda has great documentation if you ever get lost using their tools, but otherwise they’re pretty easy to use. To create a virtual python 2.7 environment called “py27,” run this:
To enter this virtual environment, we use Conda’s
source activate function:
If the environment is running properly, you should see
(py27) preceding the
$ sign at the command prompt in Terminal. In this environment we have access to Anaconda’s python package installer,
conda install, so that we can install packages at will in this “bubble” without messing up dependencies (basically breaking python) in any other environment. Side note: if you want to exit this py27 environment, just enter
source deactivate in Terminal.
(3) Update packages
Just to be safe, I updated all of my python packages while inside of my py27 environment. It’s ridiculously easy with Anaconda:
(4) Install OpenCV
With Anconda we can install python packages within a specific Conda environment using
conda install instead of
pip, the typical python package management system.
Next, I would normally suggest just typing
conda install opencv at the command prompt, but this (unsurprisingly) lead me to a package conflict with NumPy! Yep, the version of OpenCV that Conda installed relied on a specific release of the NumPy package that was actually in conflict with the one that was just updated in step (3). OK, to be honest, maybe I brought that upon myself with updating the packages the way I did. But, there’s a work around that functions with this latest update of NumPy: install OpenCV directly from the Menpo project:
(5) Fire up a Jupyter notebook and test!
What Is Anaconda
The Anaconda environment should now have everything we need to start analyzing images in a self-contained little Jupyter notebook. Test it out. First, launch a Jupyter notebook from the terminal:
Next, see if everything is installed correctly; hopefully you’ll be able to run this sans errors:
Python For Mac Anaconda Installer
If successful, you’ll be able to readily access OpenCV functions with the package prefix