Я попытался установить OpenCV из источника. Это устанавливает отлично для python 2.7 и python 3.5, но не устанавливает для python 3.6.
Я создал его с помощью следующей команды:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D PYTHON_EXECUTABLE=/usr/bin/python3.6 ..
Выходные шоу:
-- Python 3:
-- Interpreter: /usr/bin/python3 (ver 3.5.2)
-- Libraries: /usr/lib/x86_64-linux-gnu/libpython3.5m.so (ver 3.5.2)
-- numpy: /home/courts/.local/lib/python3.5/site-packages/numpy/core/include (ver 1.12.0)
-- packages path: lib/python3.5/dist-packages
--
-- Python (for build): /usr/bin/python3
И когда я make install
библиотека OpenCV становится существующей в папке dist-пакетов для python3.5, но не python3.6.
Это находится в журнале сборки:
-- Found PythonInterp: /usr/bin/python3.6 (found suitable version "3.6.2", minimum required is "2.7")
-- Found PythonInterp: /usr/bin/python3 (found suitable version "3.5.2", minimum required is "3.4")
-- Found PythonLibs: /usr/lib/x86_64-linux-gnu/libpython3.5m.so (found suitable exact version "3.5.2")
Я перечислил все флаги компилятора путем выполнения:
cmake -L | awk '{if(f)print} /-- Cache values/{f=1}'
Используя флаги, которые выглядели полезными, я создал это:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D PYTHON_EXECUTABLE=/usr/bin/python3.6 \
-D PYTHON_INCLUDE=/usr/include/python3.6/ \
-D PYTHON_LIBRARY=/usr/lib/python3.6/ \
-D PYTHON_PACKAGES_PATH=/usr/local/lib/python3.6/dist-packages/ \
-D PYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python3.6/dist-packages/numpy/core/include/ \
..
Это работало.
После выполнения этих шагов сначала для установки Python 3.6 на Ubuntu 16 необходимо будет сделать следующее для получения OpenCV, скомпилированного только для Python 3.6. Это было протестировано на OpenCV 3.4.3.
curl -L https://github.com/opencv/opencv/archive/3.4.3.zip -o opencv.zip
curl -L https://github.com/opencv/opencv_contrib/archive/3.4.3.zip -o opencvContrib.zip
unzip -q opencvContrib.zip
unzip -q opencv.zip && cd opencv-3.4.3/ && mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=RELEASE \
-DBUILD_opencv_python3=yes \
-DCMAKE_INSTALL_PREFIX=/usr/local/ \
-DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.4.3/modules \
-DPYTHON3_EXECUTABLE=/usr/bin/python3.6 \
-DPYTHON3_INCLUDE=/usr/include/python3.6/ \
-DPYTHON3_INCLUDE_DIR=/usr/include/python3.6m \
-DPYTHON3_LIBRARY=/usr/lib/python3.6/config-3.6m-x86_64-linux-gnu/libpython3.6.so \
-DPYTHON3_PACKAGES_PATH=/usr/local/lib/python3.6/dist-packages/ \
-DPYTHON_NUMPY_INCLUDE_DIR=/usr/local/lib/python3.6/dist-packageis/numpy/core/ \
-DBUILD_NEW_PYTHON_SUPPORT=ON
make -j 4 && make install && cd / && rm opencv.zip && rm opencvContrib.zip && rm -rf opencv-3.4.3/