Установка opencv для Python 3.3


по-прежнему ли OpenCV недоступен для Python 3.3 и действительно ли мне нужно перейти на Python 2.7, чтобы использовать его? Я не нашел много об этом в интернете, только некоторые сообщения от 2012 года, что OpenCV еще не был портирован для использования в Python 3.х. Но сейчас 2014 и после попытки установить последнюю формате OpenCV 2.4.x и копирование cv2.pyd file to C:Program файлы (x86)Python333Libsite-packages это все еще дает ошибку в Python IDLE:

>>> import cv2
Traceback (most recent call last):
  File "<pyshell#0>", line 1, in <module>
    import cv2
ImportError: DLL load failed: %1 ist keine zulässige Win32-Anwendung.
13 53

13 ответов:

Примечание: исходный вопрос задавался для OpenCV + Python 3.3 + Windows. С тех пор Python 3.5 был выпущен. Кроме того, я использую Ubuntu для большинства разработок, поэтому этот ответ будет сосредоточен на этой настройке, к сожалению

OpenCV 3.1.0 + Python 3.5.2 + Ubuntu 16.04 возможно! Вот как это делается.

эти шаги копируются (и слегка модифицированный) от кого:

предпосылки

установите необходимые зависимости и при необходимости установите / обновите некоторые библиотеки на вашем компьютере система:

# Required dependencies
sudo apt install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
# Dependencies for Python bindings
# If you use a non-system copy of Python (eg. with pyenv or virtualenv), then you probably don't need to do this part
sudo apt install python3.5-dev libpython3-dev python3-numpy
# Optional, but installing these will ensure you have the latest versions compiled with OpenCV
sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

Строительство OpenCV

Флаги CMake

есть несколько флагов и опций для настройки сборки OpenCV. Там может быть полная документация о них, но вот некоторые интересные флаги, которые могут использовать. Они должны быть включены в :

# Builds in TBB, a threading library
-D WITH_TBB=ON
# Builds in Eigen, a linear algebra library
-D WITH_EIGEN=ON

использование версий Python несистемного уровня

если у вас есть несколько версий Python (например. от использования pyenv или virtualenv), тогда вы можете построить против определенной версии Python. По умолчанию в формате OpenCV будет основываться на версии системы на Python. Вы можете изменить это, добавив эти аргументы cmake команда, увиденная позже в скрипте. Фактические значения будут зависеть от вашей установки. Я использую pyenv:

-D PYTHON_DEFAULT_EXECUTABLE=$HOME/.pyenv/versions/3.5.2/bin/python3.5
-D PYTHON_INCLUDE_DIRS=$HOME/.pyenv/versions/3.5.2/include/python3.5m
-D PYTHON_EXECUTABLE=$HOME/.pyenv/versions/3.5.2/bin/python3.5
-D PYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.5m.so.1

сообщения об ошибках CMake Python

файл CMakeLists будет пытаться обнаружить различные версии Python для сборки. Если у вас есть разные версии здесь, это может запутаться. Приведенные выше аргументы могут только "исправить" проблему для одной версии Python, но не для другой. Если вы заботитесь только об этой конкретной версии, то нечего беспокоиться.

это так для меня, к сожалению, я не изучал, как решить проблемы с другими версиями Python.

установить скрипт

# Clone OpenCV somewhere
# I'll put it into $HOME/code/opencv
OPENCV_DIR="$HOME/code/opencv"
OPENCV_VER="3.1.0"
git clone https://github.com/opencv/opencv "$OPENCV_DIR"
# This'll take a while...

# Now lets checkout the specific version we want
cd "$OPENCV_DIR"
git checkout "$OPENCV_VER"

# First OpenCV will generate the files needed to do the actual build.
# We'll put them in an output directory, in this case "release"
mkdir release
cd release

# Note: This is where you'd add build options, like TBB support or custom Python versions. See above sections.
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local "$OPENCV_DIR"

# At this point, take a look at the console output.
# OpenCV will print a report of modules and features that it can and can't support based on your system and installed libraries.
# The key here is to make sure it's not missing anything you'll need!
# If something's missing, then you'll need to install those dependencies and rerun the cmake command.

# OK, lets actually build this thing!
# Note: You can use the "make -jN" command, which will run N parallel jobs to speed up your build. Set N to whatever your machine can handle (usually <= the number of concurrent threads your CPU can run).
make
# This will also take a while...

# Now install the binaries!
sudo make install

по умолчанию install скрипт поместит привязки Python в некотором системном местоположении, даже если вы указали пользовательский версия Python для использования. Исправление простое: поместите символическую ссылку на привязки в вашем локальном site-packages:

ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so $HOME/.pyenv/versions/3.5.2/lib/python3.5/site-packages/

первый путь будет зависеть от версии Python, которую вы настроите для сборки. Второй зависит от того, где находится ваша пользовательская версия Python.

да поддержка Python 3 он по-прежнему не доступен в текущей версии, но он будет доступен из версии 3.0, (см. этот билет). Если вы действительно хотите иметь python 3 Попробуйте использовать версию разработки, вы можете скачать его от GitHub.

изменить (18/07/2015): версия 3.0 теперь выпущен и поддержка python 3 Теперь официально доступна

здесь решение для (Я считаю, как видно из "cp34" по ссылке ниже) Python 3.4.

перейти к to http://www.lfd.uci.edu / ~gohlke / pythonlibs / #opencv.

скачать соответствующий .колесо.

перейти в каталог, где .whl сохраняется.

используйте pip для установки .колесо. например,pip install opencv_python-3.0.0-cp34-none-win_amd64.whl

тогда просто используйте import cv2.

Я не могу прокомментировать отличную мидопу ответ из-за отсутствия репутации.

на Mac I (наконец) успешно установлен opencv из источника С помощью следующей команды:

cmake -D CMAKE_BUILD_TYPE=RELEASE 
-D CMAKE_INSTALL_PREFIX=/usr/local 
-D PYTHON_EXECUTABLE=/Library/Frameworks/Python.framework/Versions/3.4/bin/python3 
-D PYTHON_LIBRARY=/Library/Frameworks/Python.framework//Versions/3.4/lib/libpython3.4m.dylib 
-D PYTHON_INCLUDE_DIR=/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4m 
-D PYTHON_NUMPY_INCLUDE_DIRS=/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/numpy/core/include/numpy 
-D PYTHON_PACKAGES_PATH=/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages 
/relative/path/to/source/directory/

затем,

make -j8

измените 8 на количество потоков, которые может обрабатывать ваша машина, чтобы ускорить процесс

sudo make install

добавил PYTHONPATH переменная окружения для моего ~/.bash_profile файл, чтобы Python мог найти cv2.so:

PYTHONPATH="${PYTHONPATH}:/usr/local/lib/python3.4/site-packages”
export PYTHONPATH

[для тех, кто использует PyCharm, мне пришлось перейти в Настройки > структура проекта > добавить корень контента и добавить путь к С: /usr/local/lib/python3.4/site-packages]

эта команда получила меня прошлые ошибки, такие как:

Could NOT find PythonLibs, явно объявив путь к библиотеке python

ld: can't link with a main executable for architecture x86_64
collect2: error: ld returned 1 exit status
make[2]: *** [lib/cv2.so] Error 1
make[1]: *** [modules/python2/CMakeFiles/opencv_python2.dir/all] Error 2
make: *** [all] Error 2

явно указывая на libpython3.4m. dylib

в терминале, проверьте, что он работал с:

$python3
>>> import cv2

это все хорошо, если вы не получите ImportError: No module named 'cv2'

это работало на MacBook Pro Retina 15 " 2013, Mavericks 10.9.4, Python 3.4.1 (ранее установлен с официальный скачать), opencv3 от источника. Надеюсь, что это кому-то поможет.

Я знаю, что это старый поток, но на всякий случай кто-то смотрит, вот как я получил его работу на El Capitan:

brew install opencv3 --with-python3

и подождите некоторое время, пока он закончит.

затем при необходимости выполните следующие действия:

brew unlink opencv

затем выполните следующие действия в качестве последнего шага:

brew ln opencv3 --force

теперь вы должны быть в состоянии запустить import cv2 нет проблем в python 3.х сценарий.

используйте приложение pip. На окна вы найдете его в Python3/Scripts/pip.exe и на Ubuntu вы можете установить с apt-get install python3-pip. и так, используйте командную строку:

pip3 install --upgrade pip

pip3 install opencv-python

В Windows используйте только pip.exe вместо pip3

у меня было много проблем с получением opencv 3.0 для работы на OSX с привязками python3 и виртуальными средами. Другие ответы очень помогли, но все равно потребовалось немного. Надеюсь, это поможет следующему человеку. Сохраните это в build_opencv.sh. Тогда скачать opencv, измените переменные в приведенном ниже сценарии оболочки, скрестите пальцы и запустите его (. ./build_opencv.sh). Для отладки используйте другие сообщения, особенно Джеймс Флетчер.

не забудьте добавить opencv lib dir к вашему PYTHONPATH.

Примечание-это также загружает opencv-contrib, где многие функции были перемещены. И на них также теперь ссылается другое пространство имен, чем документация - например, SIFT теперь находится под cv2.xfeatures2d.SIFT_create. Угу.

#!/bin/bash
# Install opencv with python3 bindings: https://stackoverflow.com/questions/20953273/install-opencv-for-python-3-3/21212023#21212023

# First download opencv and put in OPENCV_DIR

#
# Edit this section
#
PYTHON_DIR=/Library/Frameworks/Python.framework/Versions/3.4
OPENCV_DIR=/usr/local/Cellar/opencv/3.0.0
NUM_THREADS=8
CONTRIB_TAG="3.0.0"  # This will also download opencv_contrib and checkout the appropriate tag https://github.com/Itseez/opencv_contrib


#
# Run it
#

set -e  # Exit if error

cd ${OPENCV_DIR}

if  [[ ! -d opencv_contrib ]]
then
    echo '**Get contrib modules'
    [[ -d opencv_contrib ]] || mkdir opencv_contrib
    git clone git@github.com:Itseez/opencv_contrib.git .
    git checkout ${CONTRIB_TAG}
else
    echo '**Contrib directory already exists. Not fetching.'
fi

cd ${OPENCV_DIR}

echo '**Going to do: cmake'
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D PYTHON_EXECUTABLE=${PYTHON_DIR}/bin/python3 \
    -D PYTHON_LIBRARY=${PYTHON_DIR}/lib/libpython3.4m.dylib \
    -D PYTHON_INCLUDE_DIR=${PYTHON_DIR}/include/python3.4m \
    -D PYTHON_NUMPY_INCLUDE_DIRS=${PYTHON_DIR}/lib/python3.4/site-packages/numpy/core/include/numpy \
    -D PYTHON_PACKAGES_PATH=${PYTHON_DIR}lib/python3.4/site-packages \
    -D OPENCV_EXTRA_MODULES_PATH=opencv_contrib/modules \
    -D BUILD_opencv_legacy=OFF  \
    ${OPENCV_DIR}


echo '**Going to do: make'
make -j${NUM_THREADS}

echo '**Going to do: make install'
sudo make  install

echo '**Add the following to your .bashrc: export PYTHONPATH=${PYTHONPATH}:${OPENCV_DIR}/lib'
export PYTHONPATH=${PYTHONPATH}:${OPENCV_DIR}/lib

echo '**Testing if it worked'
python3 -c 'import cv2'
echo 'opencv properly installed with python3 bindings!'  # The script will exit if the above failed.

провел 3 часа, пробуя различные варианты на Ubuntu 14.04 LTS, упомянутые здесь и в другом ссылочном учебник безрезультатно. Некоторое время пробовал с OpenCV3.0.0, но в итоге переключился на 3.1.0. Сработало следующее:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \
-D PYTHON3_EXECUTABLE=/usr/bin/python3.4m \
-D PYTHON3_INCLUDE_DIR=/usr/include/python3.4m/ \
-D PYTHON_INCLUDE_DIR=/usr/include/python3.4m/ \
-D PYTHON3_INCLUDE_DIRS=/usr/include/python3.4m/ \
-D PYTHON_INCLUDE_DIRS=/usr/include/python3.4m/ \
-D BUILD_opencv_python3=ON \
.

выход:

--   OpenCV modules:
--     To be built:                 core flann imgproc ml photo video imgcodecs shape videoio highgui objdetect superres ts features2d calib3d stitching videostab python3
--     Disabled:                    java world
--     Disabled by dependency:      -
--     Unavailable:                 cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev python2 viz

--   Python 3:
--     Interpreter:                 /usr/bin/python3.4m (ver 3.4.3)
--     Libraries:                   /usr/lib/x86_64-linux-gnu/libpython3.4m.so (ver 3.4.3)
--     numpy:                       /usr/lib/python3/dist-packages/numpy/core/include (ver 1.8.2)
--     packages path:               /usr/lib/python3/dist-packages
-- 
--   Python (for build):      

и с virtualenv используются следующие параметры cmake:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=$VIRTUAL_ENV \
-D PYTHON3_EXECUTABLE=$VIRTUAL_ENV/bin/python3 \
-D PYTHON3_PACKAGES_PATH=$VIRTUAL_ENV/lib/python3.4/site-packages \
-D PYTHON3_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython3.4m.so \
-D PYTHON3_INCLUDE_DIR=$VIRTUAL_ENV/include/python3.4m \
-D PYTHON_INCLUDE_DIR=$VIRTUAL_ENV/include/python3.4m \
-D PYTHON3_INCLUDE_DIRS=$VIRTUAL_ENV/include/python3.4m \
-D PYTHON_INCLUDE_DIRS=$VIRTUAL_ENV/include/python3.4m \
-D BUILD_opencv_python3=ON \
.

если у вас есть проблемы с ffmpeg включает в себя добавить следующее, Чтобы удалить поддержку видео:

-D WITH_FFMPEG=OFF \
-D WITH_GSTREAMER=OFF \
-D WITH_V4L=OFF \
-D WITH_1394=OFF \

также обратите внимание на предупреждение от cmake об использовании make clean. Если вы запустили make clean, вам, возможно, придется заново распаковать исходный пакет. Cmake мертв, да здравствует Cmake

полная инструкция, касающаяся ответа Джеймса Флетчера, может быть найдена здесь

в частности, для распространения Anaconda мне пришлось изменить его следующим образом:

 cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D PYTHON3_PACKAGES_PATH=/anaconda/lib/python3.4/site-packages/ \
    -D PYTHON3_LIBRARY=/anaconda/lib/libpython3.4m.dylib \
    -D PYTHON3_INCLUDE_DIR=/anaconda/include/python3.4m \
    -D INSTALL_C_EXAMPLES=ON \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_opencv_python3=ON \
    -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

последняя строка может быть опущен (см. ссылку выше)

если ты здесь... Мне жаль, что другие варианты не тренировались. Попробуйте это:

conda install -c menpo opencv3

от шага 1 из учебник Scivision. Если это не сработает, перейдите к Шагу 2:

(только для Windows) OpenCV 3.2 pip install

Скачать OpenCV .файл колесо здесь. Пакеты, которые упоминают contrib в их названии включают OpenCV-дополнительные пакеты. Например, предполагая, что у вас есть Python 3.6, вы возможно скачать opencv_python-3.2.0+contrib-cp36-none-win_amd64.whl чтобы получить пакеты OpenCV-extra.

затем из командной строки:

pip install opencv_python-3...yourVersion...win_amd64.whl

отметим, что ...win_amd64.whl пакеты колес из шага 2 в этом учебнике предназначены для чипов AMD.

кто-то опубликовал контейнер / файл docker для этого:

https://github.com/vipul-sharma20/docker-opencv3-python3

https://hub.docker.com/r/vipul20/docker-opencv3-python3/~/dockerfile/

вы можете вытащить образ непосредственно из Docker hub или следуйте инструкциям в файле docker для установки.

независимо от того, устанавливаете ли вы opencv3 вручную или из пакета whl Gohlke, я обнаружил необходимость создания / редактирования файла cv.py в site_packages следующим образом, чтобы сделать совместимым со старым кодом:

import cv2 as cv

вы можете использовать следующую команду в командной строке ( cmd) на Windows:

py -3.3 -m pip install opencv-python

Я видео о том, как установить OpenCV Python на Windows в 1 минута здесь:

https://www.youtube.com/watch?v=m2-8SHk-1SM

надеюсь, что это помогает!