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

Является ли OpenCV еще недоступным для Python 3.3 и действительно ли мне нужно перейти на Python 2.7, чтобы использовать его? Я не нашел много об этом в Интернете, только некоторые сообщения с 2012 года о том, что OpenCV еще не портирован для использования в Python 3.x. Но теперь он 2014 и после попытки установить последнюю версию OpenCV 2.4.x и скопировать файл cv2.pyd в C:\Program Files (x86)\Python333\Lib\site-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.

Ответ 1

Примечание. Первоначальный вопрос запрашивал 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. Там может быть исчерпывающая документация, но вот некоторые интересные флаги, которые могут пригодиться. Они должны быть включены в команду cmake:

# 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, увиденную позже в script. Фактические значения будут зависеть от вашей настройки. Я использую 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.

Установить script

# 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 not missing anything you'll need!
# If something 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 script поместит привязки 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.

Проверьте это!

OK позволяет попробовать!

ipython

Python 3.5.2 (default, Sep 24 2016, 13:13:17) 
Type "copyright", "credits" or "license" for more information.

IPython 5.1.0 -- An enhanced Interactive Python.
?         -> Introduction and overview of IPython features.
%quickref -> Quick reference.
help      -> Python own help system.
object?   -> Details about 'object', use 'object??' for extra details.

In [1]: import cv2

In [2]: img = cv2.imread('derp.png')
i
In [3]: img[0]
Out[3]: 
array([[26, 30, 31],
       [27, 31, 32],
       [27, 31, 32],
       ..., 
       [16, 19, 20],
       [16, 19, 20],
       [16, 19, 20]], dtype=uint8)

Ответ 2

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

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

Ответ 3

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

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

Загрузите соответствующий .whl.

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

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

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

Ответ 4

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

На Mac я (наконец) успешно установлен 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, мне нужно было перейти в "Настройки" > "Структура проекта" > "Добавить корневой каталог содержимого" и добавить путь к родительскому каталогу cv2.so: /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 из источника. Надеюсь, что это поможет кому-то.

Ответ 5

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

brew install opencv3 --with-python3

и подождите, пока он закончит.

Затем выполните следующие действия:

brew unlink opencv

Затем запустите следующий шаг:

brew ln opencv3 --force

Теперь вы можете запустить import cv2 без проблем в python 3.x script.

Ответ 6

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

pip3 install --upgrade pip

pip3 install opencv-python

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

Ответ 7

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

Не забудьте добавить каталог opencv lib в свой PYTHONPATH.

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

#!/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 [email protected]: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.

Ответ 8

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

В частности, для распространения 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 ..

Последняя строка может быть ограничена (см. ссылку выше)

Ответ 9

Отработано 3 часа, пытаясь использовать различные варианты Ubuntu 14.04LTS, упомянутые здесь, и в другом справочном учебнике безрезультатно. Некоторое время пытался с 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

Ответ 10

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

conda install -c menpo opencv3

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

(только для Windows) Установка OpenCV 3.2 pip

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

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

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

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

Ответ 12

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

import cv2 as cv