Solarian Programmer

My programming ramblings

Install OpenCV 4 with Python 3 on macOS Catalina

Posted on October 21, 2019 by Paul

Updated 11 February 2020

In this article, I will show you how to install OpenCV 4 with Python 3 on macOS Catalina.

There is also a video version of this tutorial:

MacOS comes by default with Python 2.7 which, at this point, receives only bug fixes and will be EOL by 2020. Python 3.x is the future and it is supported by all major Python libraries. In this tutorial, we’ll use the Python 3.8.

Start by installing the Command Line Tools for macOS. Please note, that you will need the Command Line Tools even if you’ve already installed Xcode. Open a Terminal and write:

1 xcode-select --install

Once the Command Line Tools are installed, we can install Python.

The official installer of Python is a pkg file that will start a GUI installer which will guide you through the installation. You can also check the video version of this tutorial if you want to see how I did it.

As a side note, you can have multiple Python 3 versions installed on your macOS machine. If this is the case, you can select which version you want to use by specifying the version number, e.g.:

1 python3.7

or:

1 python3.8

After the above, you can invoke Python 3.8 using the python3.8 command. python3 will also invoke the latest installer version of Python 3. This is what I see if I run python3.8 on my machine:

1 % python3.8
2 Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53)
3 [Clang 6.0 (clang-600.0.57)] on darwin
4 Type "help", "copyright", "credits" or "license" for more information.
5 >>> quit()
6 %

Next, let’s follow best practices and create a new Python environment in which we can install NumPy and OpenCV:

1 python3.8 -m venv work
2 source work/bin/activate

At this point, your prompt should indicate that you are using the work environment. You can read more about Python environments in the documentation.

Once an environment is activated, all the install commands will apply only to the current environment. By default, if you close your Terminal, the environment is deactivated. If you want to be able to use it, use the source work/bin/activate command.

We can install NumPy and OpenCV with:

1 pip install numpy
2 pip install opencv-python==4.1.2.30

Please note that the above will install the slightly older OpenCV 4.1, latest binary version doesn’t seem to work on macOS Catalina!

As a side note, when you are in a new environment you can use python to invoke the Python interpreter, no need to use the version number.

At this point, you should have OpenCV 4 and Python installed on your Mac. We can write a small test program that will print the OpenCV version, load an image from the disk, convert the image to gray and show the result. Start by downloading the next image:

Over the Clouds test image

Save it as clouds.jpg. In the same folder where you’ve saved the above image, create a new file demo.py and write the next code:

 1 import cv2
 2 
 3 print("OpenCV version:")
 4 print(cv2.__version__)
 5 
 6 img = cv2.imread("clouds.jpg")
 7 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
 8 
 9 cv2.imshow("Over the Clouds", img)
10 cv2.imshow("Over the Clouds - gray", gray)
11 
12 cv2.waitKey(0)
13 cv2.destroyAllWindows()

Run the code with:

1 python demo.py

(You can close the two windows by pressing ESC!)

You should see something like in the next figure. By default, the last image (the gray one) will be over the first one. You need to move the window in order to see both images:

Python 4 OpenCV 4 test - convert image to gray

If you want to learn more about OpenCV and Python I would recommend reading OpenCV with Python Blueprints by M. Beyeler:

or, OpenCV with Python By Example by G. Garrido and P. Joshi:


Show Comments