Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Install opencv for Python 3.3

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. 
like image 960
tim Avatar asked Jan 06 '14 15:01

tim


People also ask

Can I use OpenCV with Python 3?

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.

Does Python 3.10 have OpenCV?

Looks like there is no opencv-python for Python 3.10...

How do I install OpenCV on Windows?

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.

Does OpenCV work with Python 3?

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.

What is the license for OpenCV-Python?

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.

Why can’t I build OpenCV in PyPi?

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.


2 Answers

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:

  • http://docs.opencv.org/3.1.0/d7/d9f/tutorial_linux_install.html
  • https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_setup/py_setup_in_fedora/py_setup_in_fedora.html#install-opencv-python-in-fedora

Prerequisites

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 

Building OpenCV

CMake Flags

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 

Using non-system level Python versions

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 

CMake Python error messages

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.

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

Test it!

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) 
like image 168
midopa Avatar answered Sep 23 '22 17:09

midopa


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.

like image 43
user3731622 Avatar answered Sep 24 '22 17:09

user3731622