Is OpenCV still not available for Python 3.3 and do I really have to downgrade to Python 2.7 to use it? I didn't find much about it on the internet, only some posts from 2012 that OpenCV wasn't yet ported to be used in Python 3.x. But now it's 2014 and after trying to install the latest OpenCV 2.4.x and copying the cv2.pyd
file to C:\Program Files (x86)\Python333\Lib\site-packages this still yields the error in 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.
The nice thing with OpenCV is that it comes with a complete Python 3 library. The latest GeeXlab 0.29. 17.0 for Windows 64-bit comes with Python 3.8. 2 and OpenCV 4.2.
Looks like there is no opencv-python for Python 3.10...
To install OpenCV, one must have Python and PIP, preinstalled on their system. To check if your system already contains Python, go through the following instructions: Open the Command line (search for cmd in the Run dialog ( + R ). If Python is already installed, it will generate a message with the Python version available.
OpenCV (including OpenCV 2.4) does not compiles with Python 3.x. Python3 support is already in wishlist for future versions of OpenCV. But currently there are no activities in this direction and you are welcome to create and contribute a patch resolving the compatibility issues.
Opencv-python package (scripts in this repository) is available under MIT license. OpenCV itself is available under Apache 2 license. Third party package licenses are at LICENSE-3RD-PARTY.txt.
This means that if your system is not compatible with any of the wheels in PyPI, pip will attempt to build OpenCV from sources. If you need a OpenCV version which is not available in PyPI as a source distribution, please follow the manual build guidance above instead of this one.
EDIT: first try the new pip method:
Windows: pip3 install opencv-python opencv-contrib-python
Ubuntu: sudo apt install python3-opencv
or continue below for build instructions
Note: The original question was asking for OpenCV + Python 3.3 + Windows. Since then, Python 3.5 has been released. In addition, I use Ubuntu for most development so this answer will focus on that setup, unfortunately
OpenCV 3.1.0 + Python 3.5.2 + Ubuntu 16.04 is possible! Here's how.
These steps are copied (and slightly modified) from:
Install the required dependencies and optionally install/update some libraries on your system:
# 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
There are several flags and options to tweak your build of OpenCV. There might be comprehensive documentation about them, but here are some interesting flags that may be of use. They should be included in the cmake
command:
# Builds in TBB, a threading library -D WITH_TBB=ON # Builds in Eigen, a linear algebra library -D WITH_EIGEN=ON
If you have multiple versions of Python (eg. from using pyenv or virtualenv), then you may want to build against a certain Python version. By default OpenCV will build for the system's version of Python. You can change this by adding these arguments to the cmake
command seen later in the script. Actual values will depend on your setup. I use 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
The CMakeLists file will try to detect various versions of Python to build for. If you've got different versions here, it might get confused. The above arguments may only "fix" the issue for one version of Python but not the other. If you only care about that specific version, then there's nothing else to worry about.
This is the case for me so unfortunately, I haven't looked into how to resolve the issues with other Python versions.
# 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
By default, the install
script will put the Python bindings in some system location, even if you've specified a custom version of Python to use. The fix is simple: Put a symlink to the bindings in your local 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/
The first path will depend on the Python version you setup to build. The second depends on where your custom version of Python is located.
OK lets try it out!
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)
Here a solution for (I believe as seen by 'cp34' on the link below) Python 3.4.
Go to to http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv.
Download the appropriate .whl.
Go to the directory where the .whl is saved.
Use pip to install the .whl. e.g. pip install opencv_python-3.0.0-cp34-none-win_amd64.whl
Then just use import cv2
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With