I want to install OpenCV for python3 in ubuntu 16.04. Fist I tried running sudo apt-get install python3-opencv
which is how I pretty much install all of my python software. This could not find a repository. The install does work however if I do sudo apt-get install python-opencv
this issue with this is that by not adding the three to python it installs for python 2 which I do not use. I would really perfer not to have to build and install from source so is there a way I can get a repository? I also tried installing it with pip3 and it could not find it either.
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.
If you've reached this step, OpenCV 3.0 should now be installed in /usr/local/lib/python3.
Well this will be a lengthy answer, so let's start :
Step 1: Install prerequisites : Upgrade any pre-installed packages:
$ sudo apt-get update $ sudo apt-get upgrade
Install developer tools used to compile OpenCV 3.0:
$ sudo apt-get install build-essential cmake git pkg-config
Install libraries and packages used to read various image and videos formats from disk:
$ sudo apt-get install libjpeg8-dev libtiff5-dev libpng-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
Install GTK so we can use OpenCV’s GUI features:
$ sudo apt-get install libgtk2.0-dev
Install packages that are used to optimize various functions inside OpenCV, such as matrix operations:
$ sudo apt-get install libatlas-base-dev gfortran
Step 2: Setup Python (Part 1)
Let’s download pip , a Python package manager, installed for Python 3:
$ wget https://bootstrap.pypa.io/get-pip.py $ sudo python3 get-pip.py
Let’s use our fresh pip3 install to setup virtualenv and virtualenvwrapper :
$ sudo pip3 install virtualenv virtualenvwrapper
Now we can update our ~/.bashrc file (place at the bottom of the file):
# virtualenv and virtualenvwrapper export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwrapper.sh $ source ~/.bashrc $ mkvirtualenv cv
Step 2: Setup Python (Part 2)
we’ll need to install the Python 3.4+ headers and development files:
$ sudo apt-get install python3.4-dev
OpenCV represents images as NumPy arrays, so we need to install NumPy into our cv virtual environment:
$ pip install numpy
Step 3: Build and install OpenCV 3.0 with Python 3.4+ bindings
$ cd ~ $ git clone https://github.com/opencv/opencv.git $ cd opencv $ git checkout 3.0.0 $ cd ~ $ git clone https://github.com/opencv/opencv_contrib.git $ cd opencv_contrib $ git checkout 3.0.0
Time to setup the build:
$ cd ~/opencv $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_C_EXAMPLES=ON \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON ..
Let's start OpenCV compile process :
$ make -j4
Assuming OpenCV 3.0 compiled without error, you can now install it on your system:
$ sudo make install $ sudo ldconfig
Step 4: Sym-link OpenCV 3.0
If you’ve reached this step, OpenCV 3.0 should now be installed in /usr/local/lib/python3.4/site-packages/
.
Here, our OpenCV bindings are stored under the name cv2.cpython-34m.so
However, in order to use OpenCV 3.0 within our cv virtual environment, we first need to sym-link OpenCV into the site-packages directory of the cv environment, like this: (Be sure to take note of cv2.cpython-34m.so
)
$ cd ~/.virtualenvs/cv/lib/python3.4/site-packages/ $ ln -s /usr/local/lib/python3.4/site-packages/cv2.cpython-34m.so cv2.so
Notice how I am changing the name from cv2.cpython-34m.so to cv2.so — this is so Python can import our OpenCV bindings using the name cv2 .
Step 5: Test out the OpenCV 3.0 and Python 3.4+ install
$ workon cv $ python >>> import cv2 >>> cv2.__version__ '3.0.0'
Hope that helps. Also, credit to Adrian Rosebrock on his post. It worked for me as a charm.
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