Utiliser OpenCV avec Python et C++ sous Ubuntu


La page suivante montre comment Utiliser OpenCV avec Python et C++ sous Raspbian (version du 20 août 2020).
Programmer en Python et en C++ avec OpenCV, sous Raspbian

Dans le cas présent on utilise un ordinateur sous Ubuntu 18.04, équipé du compilateur g++ 7.5.0 (partie de GCC permettant de compiler et linker les programmes C++) et de l'interpréteur Python 3.6.9.
ubuntu@ubuntu-MS-7C08:~$ g++ -v
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
ubuntu@ubuntu-MS-7C08:~$ python3
Python 3.6.9 (default, Oct 8 2020, 12:12:24)
ubuntu@ubuntu-MS-7C08:~$

Pour utiliser OpenCV avec Python et C++ sous Ubuntu 18.04, on peut procéder de la même façon.
1) On installe OpenCV;
2) On Utilise OpenCV avec g++;
3) On utilise OpenCV avec Python.

1) Installer OpenCV

On installe OpenCV (en version développement, pour pouvoir développer des programmes), à l'aide des commandes suivantes:
sudo apt-get update
sudo apt-get install libopencv-dev

Ensuite, on vérifie, à l'aide de la commande dpkg-query -l que OpenCV est bien installé, notamment le paquet libopencv-dev, nécessaire pour pouvoir programmer.

Le fichier suivant donne un compte rendu de ces opérations. OpenCV est désormais installé et prêt à être utilisé.
Compte rendu : fichier-01.txt

2) Utiliser OpenCV avec g++

On crée le fichier essai.cpp suivant qui se limite à afficher dans une fenêtre l'image essai.png contenue dans le répertoire du programme.
/* essai.cpp */
#include <stdio.h>
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
Mat image;
image = imread( "essai.png", 1 );
if ( !image.data )
{
printf("fichier image non trouvé ! \n");
return -1;
}
namedWindow("essai", WINDOW_AUTOSIZE );
imshow("essai", image);
waitKey(0);
return 0;
}

Fichier source : essai.cpp

On compile ce programme (avec le compilateur g++ de l'outil GCC) puis on l'exécute à l'aide des commandes suivantes (avec le Terminal de commandes ouvert dans le répertoire du programme) :
g++ essai.cpp -o essai `pkg-config --cflags --libs opencv`
./essai

01

Remarque

Dans la commande de compilation, il faut obligatoirement utiliser des apostrophes inversées ` et non pas des apostrophes droites '. En effet la commande g++ essai.cpp -o essai 'pkg-config --cflags --libs opencv' avec des apostrophes droites entraine l'erreur "g++: error: pkg-config --cflags --libs opencv: Aucun fichier ou dossier de ce type"

3) Utiliser OpenCV avec Python

On ouvre un IDE (Environnement de développement intégré) pour Python (l'IDE Thonny par exemple).
On saisit les commandes import cv2 puis cv2.__version__ (l'une après l'autre) dans la partie Shell située en bas de la fenêtre de Thonny.
Si la réponse '3.2.0' apparaît c'est que le paquet python3-opencv qui permet d'assurer les liaisons python-OpenCV est déjà installé. Dans ce cas il n'y a rien de plus à faire. Tout est en place pour pouvoir utiliser OpenCV avec Python.

Exemple
>>> import cv2
>>> cv2.__version__
'3.2.0'
>>>

En revanche si, lorsqu'on saisit import cv2, dans le Shell de Thonny, on obtient un message d'erreur c'est que python3-opencv n'est pas installé.

Exemple
>>> import cv2
cv2.__version__
Traceback (most recent call last):
File "<pyshell>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
>>> import cv2

Dans ce cas, il faut installer le paquet python3-opencv qui permet d'assurer les liaisons entre l'interpréteur python d'une part et la librairie OpenCV d'autre part. Pour cela, on utilise les commandes suivantes :
sudo apt-get update
sudo apt-get install python3-opencv

On vérifie, à l'aide de la commande dpkg-query -l que le paquet python3-opencv est bien installé. On peut constater au passage, en examinant le fichier ci-joint de compte rendu des opérations, que le paquet python3-numpy qui n'était pas installé et qui est nécessaire à OpenCV a été installé en même temps automatiquement.
Compte rendu : fichier-02.txt

On enregistre, dans un fichier essai.py, le code source suivant qui affiche simplement une image dans une fenêtre. On place l'image essai.png dans le répertoire du programme essai.py.

import cv2
img = cv2.imread('essai.png',1)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Fichier source : essai.py

On clique le bouton Run et le programme s'exécute aussitôt.

02