Traitement d'images en C++ : bibliothèques CImg, OpenCV et Magick++

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec des images en C++ : aperçu des bibliothèques et exemples pratiques



Le traitement d'images numériques est l'une des tâches clés de la programmation moderne. En C++, il existe plusieurs bibliothèques puissantes permettant de charger, modifier, analyser et enregistrer des images. Dans cet article, nous examinerons trois outils les plus populaires : CImg (légère et simple), OpenCV (standard industriel pour la vision par ordinateur) et GraphicsMagick (pour la conversion haute performance).



1. CImg — une bibliothèque légère pour les opérations de base



CImg (The C++ Template Image Processing Library) est une bibliothèque d'en-tête qui ne nécessite pas l'installation de DLL supplémentaires. Elle est idéale pour les projets éducatifs et le prototypage rapide. Elle prend en charge les formats BMP, PNG, JPEG, TIFF (via des codecs externes).



Installation

Il suffit de télécharger le fichier CImg.h et de l'inclure dans votre projet. Pour travailler avec JPEG/PNG, libjpeg, libpng et zlib sont également nécessaires.



Exemple : chargement, inversion des couleurs et enregistrement

#include "CImg.h"using namespace cimg_library;

int main() { // Charger l'image CImg<unsigned char> img("input.jpg"); // Inverser les couleurs (pixel = 255 - pixel) CImg<unsigned char> inverted = 255 - img; // Appliquer un flou gaussien (rayon 3) CImg<unsigned char> blurred = img.get_blur(3); // Enregistrer les résultats inverted.save("inverted.jpg"); blurred.save("blurred.jpg"); return 0;}


2. OpenCV — un framework puissant pour la vision par ordinateur



OpenCV (Open Source Computer Vision Library) est la norme de facto pour les tâches de reconnaissance, de détection d'objets et de traitement d'images complexe. Elle prend en charge des centaines d'algorithmes, le travail avec la vidéo et les réseaux de neurones. Elle est multiplateforme.



Installation

Sous Ubuntu : sudo apt install libopencv-dev. Sous Windows — via vcpkg ou l'installateur officiel.



Exemple : détection de contours (Canny) et redimensionnement

#include <opencv2/opencv.hpp>using namespace cv;

int main() { // Lecture de l'image Mat img = imread("photo.jpg"); if (img.empty()) return -1; // Conversion en niveaux de gris Mat gray; cvtColor(img, gray, COLOR_BGR2GRAY); // Détection de contours par l'algorithme Canny Mat edges; Canny(gray, edges, 50, 150); // Redimensionnement à 300x300 Mat resized; resize(img, resized, Size(300, 300)); // Enregistrement et affichage imwrite("edges.jpg", edges); imshow("Original", img); waitKey(0); return 0;}


3. GraphicsMagick — conversion rapide et traitement par lots



GraphicsMagick est un fork d'ImageMagick, axé sur la stabilité et les performances. Il est utilisé pour la conversion de masse, le redimensionnement, les filigranes. Il fonctionne avec plus de 200 formats.



Installation

Via le gestionnaire de paquets : sudo apt install graphicsmagick. Pour C++, la bibliothèque libgraphicsmagick++-dev est requise.



Exemple : réduction d'image et conversion en PNG

#include <Magick++.h>using namespace Magick;

int main() { InitializeMagick(nullptr); // Chargement de l'image Image image("input.tiff"); // Mise à l'échelle à 800 pixels de largeur image.scale(Geometry("800x")); // Rotation de 90 degrés image.rotate(90); // Définition de la qualité JPEG (si le format de sortie est JPEG) image.quality(85); // Enregistrement en PNG image.write("output.png"); return 0;}


Comparaison des bibliothèques

  • CImg — démarrage simple, minimum

Recommendations