Set up a development environment for OpenCV and Python

Python and OpenCV are used to develop services and applications using Computer Vision, Machine Learning (ML), and Artificial Intelligence (AI). It is also used to learn about these technologies.

Once the development environment is set up, you can develop with Python and OpenCV using almost the same code and procedures, regardless of your OS. For example, the book I’m currently referencing for this learning article is based on Ubuntu Linux, but I’m using both Windows and macOS. Nevertheless, the Python code in the books works the same as it is. Also, the way to install the necessary libraries is the same.

This article describes how to set up Python and OpenCV for Computer Vision, ML, and AI.


WSL: Setting up Windows Services for Linux

WSL is required to develop on Windows in the same manner as on Ubuntu or macOS. See the following article on how to set up WSL.

About Shells

In this article, we will run commands in a shell; on macOS, we will use the Terminal app; on Windows, we will use the WSL shell.

Install Python3

Python3 comes pre-installed on both Windows (WSL) and Ubuntu. However, even if it is not installed, it will be installed as one of the dependencies when pip3 is installed later.

For macOS, when Xcode is installed, Python, and NumPy are also installed during the setup process when Xcode is launched for the first time.

Install Mesa 3D Graphics Library (Windows and Ubuntu)

The Mesa project is an open-source version of OpenGL. It can be installed with apt as follows.

sudo apt install libgl1-mesa-dev

Install Pip3 (Windows and Ubuntu)

Pip is Python’s official package management tool. It is probably installed by default, but you can install it with apt.

sudo apt install python3-pip

Install Tkinter

Tkinter is a library for handling GUI from Python. We often use Matplotlib from Python to display images, graphs, etc. You can install it with apt.

sudo apt install python3-tk

Without it installed, you will encounter the following error message, causing Matplotlib’s GUI functions to malfunction.

Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure.

Install OpenCV

Install OpenCV and subsequently use pip3 to install Python packages, as we will utilize Python.

Check for installable versions.

Input the following command to obtain a list of available versions.

pip3 install opencv-python==
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement opencv-python== (from versions:,,,,,,,,,,,,,,,,,,,,,,,,
ERROR: No matching distribution found for opencv-python==

In this example, the latest version is

Install it.

Install the latest version: as found in STEP 1.

pip3 install opencv-python==

Install OpenCV extensions

Install the OpenCV extension module using pip3 as with OpenCV.

Check for installable versions.

Enter the following to get a list of available versions to install

pip3 install opencv-contrib-python==
Defaulting to user installation because normal site-packages is not writeable
ERROR: Could not find a version that satisfies the requirement opencv-contrib-python== (from versions:,,,,,,,,,,,,,,,,
ERROR: No matching distribution found for opencv-contrib-python==
Install it.

Install the same version as OpenCV. is installable. It is the same version as OpenCV.

pip3 install opencv-contrib-python==

Install Matplotlib

Matplotlib is a library used for drawing graphs in Python. If you try to use Matplotlib in an environment where Matplotlib is not installed, you will receive the following error.

    from matplotlib import pyplot as plt
ModuleNotFoundError: No module named 'matplotlib'

Install with pip3.

pip3 install matplotlib

You can also specify a version. If you do not specify a version, the latest version will be installed.

Install Python bindings for Qt

When using OpenCV cv2.imshow(), etc., I get the following error if the Python bindings for Qt are not installed.

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/akira/.local/lib/python3.10/site-packages/cv2/qt/plugins" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: xcb.


Install the Python bindings for Qt. For example, install the Python3 binding for Qt5 with apt as follows.

sudo apt install python3-pyqt5

Authored Books

Let's share this post !

Author of this article

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn