web-dev-qa-db-fra.com

Installez opencv pour Python 3.3

OpenCV n’est-il toujours pas disponible pour Python 3.3 et dois-je vraiment rétrograder à Python 2.7 pour l'utiliser? Je n'ai pas trouvé grand chose à ce sujet sur le Internet, seules quelques publications de 2012 selon lesquelles OpenCV n’était pas encore porté pour être utilisé dans Python 3.x. Mais maintenant nous sommes en 2014 et après avoir essayé d’installer la dernière OpenCV 2.4.x et en copiant le cv2.pyd fichier dans C:\Program Files (x86)\Python333\Lib\site-packages cela génère toujours l’erreur 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.
57
tim

EDIT: essayez d’abord la nouvelle méthode pip:

Windows: pip3 install opencv-python opencv-contrib-python

Ubuntu: Sudo apt install python3-opencv

ou continuez ci-dessous pour les instructions de construction

Remarque: La question initiale consistait à demander OpenCV + Python 3.3 + Windows. Depuis lors, Python 3.5 a été publié. De plus, j'utilise Ubuntu pour la plupart développement donc cette réponse se concentrera sur cette configuration, malheureusement

OpenCV 3.1.0 + Python 3.5.2 + Ubuntu 16.04 est possible! Voici comment.

Ces étapes sont copiées (et légèrement modifiées) à partir de:

Conditions préalables

Installez les dépendances requises et éventuellement installer/mettre à jour certaines bibliothèques sur votre système:

# 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

Construire OpenCV

CMake Drapeaux

Il existe plusieurs indicateurs et options pour peaufiner votre construction d'OpenCV. Il existe peut-être une documentation complète à leur sujet, mais voici quelques drapeaux intéressants qui peuvent être utiles. Ils devraient être inclus dans la commande cmake:

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

Utilisation de versions de niveau non système Python

Si vous avez plusieurs versions de Python (par exemple, en utilisant pyenv ou virtualenv), alors vous voudrez peut-être créer contre une certaine Python. Par défaut, OpenCV construira pour la version système de Python. Vous pouvez changer cela en ajoutant ces arguments à la commande cmake, plus tard dans le script. Les valeurs réelles dépendront de votre configuration. J'utilise 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

Le fichier CMakeLists essaiera de détecter différentes versions de Python à construire pour. Si vous avez différentes versions ici, vous risquez de vous perdre. Les arguments ci-dessus peuvent uniquement "résoudre" le problème d'un problème. version de Python mais pas l'autre. Si vous vous souciez seulement de cette version spécifique, alors vous n'avez plus rien à craindre.

C’est le cas pour moi alors, malheureusement, je n’ai pas cherché à résoudre les problèmes avec d’autres Python versions.

Script d'installation

# 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

Par défaut, le script install placera les liaisons Python dans un emplacement système, même si vous avez spécifié une version personnalisée de Python Le correctif est simple: placez un lien symbolique sur les liaisons dans votre site-packages local:

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/

Le premier chemin dépendra de la version Python que vous avez configurée pour la construction. Le second dépend de l'emplacement de votre version personnalisée de Python.

Essaye-le!

OK permet de l'essayer!

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's features.
%quickref -> Quick reference.
help      -> Python's 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)
44
midopa

Oui support pour Python 3, il n'est toujours pas disponible dans la version actuelle, mais il sera disponible à partir de la version .0, (voir ce ticket) . Si vous voulez vraiment python 3 essayez d’utiliser la version de développement, vous pouvez le télécharger depuis GitHub .

EDIT (18/07/2015): la version 3.0 est maintenant disponible et le support de python 3 est maintenant officiellement disponible

13
Pawel Miech

Voici une solution pour (je crois, vu par 'cp34' sur le lien ci-dessous) Python 3.4.

Allez à http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv .

Téléchargez le fichier .whl approprié.

Accédez au répertoire dans lequel le fichier .whl est enregistré.

Utilisez pip pour installer le fichier .whl. par exemple. pip install opencv_python-3.0.0-cp34-none-win_AMD64.whl

Ensuite, utilisez simplement import cv2.

13
user3731622

Utilisez l'application pip. Sur Windows, vous le trouvez dans Python3/Scripts/pip.exe et sur Ubuntu, vous pouvez installer avec apt-get install python3-pip. et ainsi, utilisez la ligne de commande:

pip3 install --upgrade pip

pip3 install opencv-python

Sous Windows, utilisez uniquement pip.exe à la place de pip3.

7
Allan Galdino

Je sais que c'est un vieux fil, mais juste au cas où quelqu'un regarderait, voici comment je l'ai obtenu sur El Capitan:

brew install opencv3 --with-python3

et attendez un peu qu'il finisse.

Puis exécutez ce qui suit si nécessaire:

brew unlink opencv

Puis exécutez ce qui suit comme dernière étape:

brew ln opencv3 --force

Vous devriez maintenant pouvoir exécuter import cv2 pas de problème dans un script python 3.x.

6
jamescampbell

Je ne peux pas commenter l'excellente midopa réponse en raison du manque de réputation.

Sur un Mac, j'ai ouvert (enfin) avec succès, opencv du source en utilisant les commandes suivantes:

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/

Ensuite,

make -j8

changer 8 pour le nombre de threads que votre machine peut gérer, pour accélérer les choses

Sudo make install

J'ai ajouté une variable d'environnement PYTHONPATH à mon fichier ~/.bash_profile Afin que Python puisse trouver cv2.so:

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

[Pour ceux qui utilisaient PyCharm, je devais aller dans Préférences> Structure du projet> Ajouter une racine de contenu et ajouter le chemin d'accès au répertoire parent de cv2.so: /usr/local/lib/python3.4/site-packages]

Cette commande m'a eu des erreurs passées telles que:

Could NOT find PythonLibs, En déclarant explicitement le python chemin de la bibliothèque

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

en désignant explicitement libpython3.4m.dylib

Dans le terminal, vérifiez qu'il fonctionne avec:

$python3
>>> import cv2

C'est bien si vous n'obtenez pas ImportError: No module named 'cv2'

Cela a fonctionné sur un Macbook Pro Retina 15 "2013, Mavericks 10.9.4, Python 3.4.1 (précédemment installé à partir de téléchargement officiel ), opencv3 à partir du code source. J'espère que cela aide quelqu'un.

6
James Fletcher

J'ai eu beaucoup de difficulté à faire fonctionner opencv 3.0 sur OSX avec des liaisons python3 et des environnements virtuels. Les autres réponses ont beaucoup aidé, mais cela a encore pris un peu. Espérons que cela aidera la prochaine personne. Sauvegarder ceci dans build_opencv.sh. Ensuite, download opencv , modifiez les variables dans le script Shell ci-dessous, croisez les doigts et exécutez-le (. ./build_opencv.sh). Pour le débogage, utilisez les autres messages, en particulier James Fletchers .

N'oubliez pas d'ajouter le répertoire opencv lib à votre PYTHONPATH.

Remarque - ceci télécharge également opencv-contrib, où de nombreuses fonctions ont été déplacées. Et ils sont également maintenant référencés par un espace de noms différent de celui de la documentation - par exemple, SIFT est maintenant sous 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.
3
Ross R

J'ai passé 3 heures à essayer les différentes options sur Ubuntu 14.04LTS mentionnées ici et dans une autre référence tutoriel en vain. Pendant un certain temps essayé avec OpenCV3.0.0 mais finalement basculé à 3.1.0. Ce qui suit a travaillé:

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 \
.

sortie:

--   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):      

Et avec virtualenv utilisé les options de cmake suivantes:

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 \
.

Si vous avez des problèmes avec ffmpeg, ajoutez ce qui suit pour supprimer le support vidéo:

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

Tenez également compte de l’avertissement de cmake concernant l’utilisation de make clean. Si vous avez exécuté make clean, vous devrez peut-être décompresser à nouveau le paquet original. Cmake est mort, vive le Cmake

3
gesell

Une instruction complète relative à la réponse de James Fletcher peut être trouvée ici

Pour la distribution Anaconda en particulier, j'ai dû le modifier de la manière suivante:

 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 ..

La dernière ligne peut être omise (voir lien ci-dessus)

2
Dima Lituiev

Quelqu'un a publié un conteneur/fichier docker pour cela:

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

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

Vous pouvez extraire l'image directement du docker hub ou suivre les instructions du fichier Dockerfile à installer.

1
Karl Rosaen

Si vous êtes ici ... Je suis désolé, les autres options ne se sont pas déroulées. Essaye ça:

conda install -c menpo opencv3

de l'étape 1 de tutoriel de Scivision . Si cela ne fonctionne pas, passez à l'étape 2:

(Windows uniquement) OpenCV 3.2 pip install

Téléchargez le fichier .whl d'OpenCV ici . Les paquets qui mentionnent contrib dans leur nom incluent les paquets OpenCV-extra. Par exemple, en supposant que vous avez Python 3.6, vous pouvez télécharger opencv_python-3.2.0+contrib-cp36-none-win_AMD64.whl pour obtenir les packages OpenCV-extra.

Ensuite, à partir de l'invite de commande:

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

Notez que le ...win_AMD64.whl Les packages de roues de l'étape 2 de ce tutoriel sont destinés aux puces AMD.

1
zelusp

Que vous installiez opencv3 manuellement ou à partir du paquet whl de Gohlke, j'ai trouvé qu'il était nécessaire de créer/éditer le fichier cv.py dans paquets_site comme suit pour le rendre compatible avec l'ancien code:

import cv2 as cv
0
Ninga

Vous pouvez utiliser la commande suivante dans la commande Invite ( cmd ) sous Windows :

py -3.3 -m pip install opencv-python

J'ai fait une vidéo sur la façon d'installer OpenCV Python sur Windows dans 1 minute ici:

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

J'espère que ça aide !

0
Geraldo Neto