I found myself wanting to use some OpenCV features from Python. But I prefer to use Python 3, which made the Homebrew distribution of OpenCV almost useless - as the version coming with Homebrew doesn't support it. The only option was then compiling OpenCV 3.0.0. Here's how I went about doing it.
For the following, I'm assuming you're using Python 3.4.3 coming with Homebrew. Note that future updates might break the compilation, so proceed with care. Also, the OpenCV distribution that comes with Homebrew mustn't be installed or you'll have problem linking this one later.
The first step is downloading OpenCV 3.0.0 - using git works just as well as downloading the zip file.
git https://github.com/Itseez/opencv.git cd opencv mkdir release cd release
Now I'm assuming you'd like to keep your installation tidy, and the best way is to let Homebrew handle this. The next command will let you configure the compilation, and to do so you will have to set some variables. The command to launch is
You need to fill in the following variables:
|PYTHON3_INCLUDE_DIR||/usr/local/Frameworks/ Python.framework/Versions/3.4/ include/python3.4m|
|PYTHON3_LIBRARY||/usr/local/Frameworks/ Python.framework/Versions/3.4/ lib/libpython3.4.dylib|
CMAKE_INSTALL_PREFIX is what will later allow Homebrew to handle your installation of OpenCv. Also, you might notice that
PYTHON2_EXECUTABLE is actually set to Python 3. For reasons beyond me, without that it doesn't look the Python bindings are compiled correctly so, well, whatever works.
At this point, you can check that
cmake is happy with what you've done with Python. To do so, first of all, save your configuration by pressing <C> from the keyboard, and then <Q>. Then, just type
and you should see the following:
-- Python 2: -- Interpreter: /usr/local/bin/python3.4 (ver 3.4.3) -- -- Python 3: -- Interpreter: /usr/local/bin/python3 (ver 3.4.3) -- Libraries: /usr/local/Frameworks/Python.framework/Versions/3.4/lib/libpython3.4.dylib (ver 3.4.3) -- numpy: /usr/local/lib/python3.4/site-packages/numpy/core/include (ver 1.9.2) -- packages path: /usr/local/lib/python3.4/site-packages -- -- Python (for build): /usr/local/bin/python3.4
This way you should be confident that the compilation process will generate all your Python bindings. And now we go with the usual
make make install
and of course, to make sure that Homebrew will take care of your installation,
brew link opencv
If you want to make sure that the Python binding has been compiled, you should find the file
lib/python3/cv2.so inside your
And finally, one little catch. Keep in mind that this
cv2.so will end up inside your python site-packages, i.e., outside the reach of Homebrew. An alternative might be to set
PYTHON3_PACKAGES_PATH somewhere inside the Cellar, and then add it to your
PYTHONPATH variable, but I don't know if that will work or not.