Compile OpenCV 3.2 for Anaconda Python 3.6, 3.5, 3.4 and 2.7

Note: you don’t have to compile OpenCV for Python yourself:  Easy install OpenCV for Python


Compile OpenCV 3 on Python 2.7

change the python3 references to python2. For OpenCV 3 on Python 3.6, 3.5 or 3.4, use python3

NOTE: YOU MUST NOT USE GCC-6, YOU MUST USE GCC-5 ! otherwise you’ll get error

~/miniconda3/lib/libopencv_objdetect.so.3.2: undefined symbol: _ZTINSt6thread6_StateE

Prereqs: Linux/Windows Subsystem for Linux:

apt install gcc g++ git libjpeg-dev libpng-dev libtiff5-dev libjasper-dev libavcodec-dev libavformat-dev libswscale-dev pkg-config cmake libgtk2.0-dev libeigen3-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev sphinx-common libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libopenexr-dev libgstreamer-plugins-base1.0-dev libavcodec-dev libavutil-dev libavfilter-dev libavformat-dev libavresample-dev

Prereqs: Mac OS X

brew install git cmake pkg-config jpeg libpng libtiff openexr eigen tbb

Cmake configuration: OpenCV for Python 3

cd /tmp
wget https://github.com/Itseez/opencv/archive/3.2.0.zip

unzip 3*.zip
cd /opencv*

mkdir release
cd release

cmake -DBUILD_TIFF=ON -DBUILD_opencv_java=OFF -DWITH_CUDA=OFF -DENABLE_AVX=ON -DWITH_OPENGL=ON -DWITH_OPENCL=ON -DWITH_IPP=OFF -DWITH_TBB=ON -DWITH_EIGEN=ON -DWITH_V4L=ON -DWITH_VTK=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_opencv_python2=OFF -DCMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -DPYTHON3_EXECUTABLE=$(which python3) -DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..

If you have trouble with Cmake, consider cmake-gui or using the simplest Cmake script at the bottom of this page.

Compile and Install OpenCV source

make -j4
make install   # do not use sudo !

which results in something like this Gist:

Notes on compiling OpenCV for Python 3

  • if you get error /usr/include/c++/6/cstdlib:75:25: fatal error: stdlib.h: No such file or directory #include_next <stdlib.h>  then try using g++ 5
  • Disable use of Nvidia CUDA when compiling OpenCV via -DWITH_CUDA=OFF. Because Cuda takes so much longer to compile, even if you have the GPU, maybe first try without CUDA, to see if OpenCV3 is going to work for you, then recompile with CUDA.
  • To avoid the libopencv\_imgcodecs.so.3: undefined reference to [email protected]_4.0 type errors, I added the -DBUILD_TIFF=ON option
  • Note: If you get the error like lib/libm.so.6: version GLIBC_2.15 not found (required by /usr/lib/x86\_64-linux-gnu/libx264.so.142) then try as a fix to GLIBC_2.15 not found

    cd ~/anaconda3/lib
    mv libm.so.6 libm.so.6.bak
    

core dump

If you get SIGILL illegal instruction (Core dumped) when typing import cv2 let’s try to get more information by typing in Terminal

sudo sysctl -w kernel.core_pattern=core
ulimit -c unlimited

and rerun the command that gave the core dumped error. Now you’ll have a file “core” in that directory. Type in Terminal

gdb python core

to get hints about the failure.

Minimal OpenCV cmake

This has just the stuff needed for a basic OpenCV install for Python 3.

cmake -DBUILD_TIFF=ON -DBUILD_opencv_java=OFF -DWITH_CUDA=OFF -DENABLE_AVX=OFF -DWITH_OPENGL=OFF -DWITH_OPENCL=OFF -DWITH_IPP=OFF -DWITH_TBB=OFF -DWITH_EIGEN=OFF -DWITH_V4L=OFF -DWITH_VTK=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_opencv_python2=OFF -DCMAKE_INSTALL_PREFIX=$(python3 -c "import sys; print(sys.prefix)") -DPYTHON3_EXECUTABLE=$(which python3) -DPYTHON3_INCLUDE_DIR=$(python3 -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON3_PACKAGES_PATH=$(python3 -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())") ..

reference