Maison > développement back-end > C++ > le corps du texte

Comment écrire un programme simple de traitement d'image en C++ ?

WBOY
Libérer: 2023-11-03 09:58:50
original
798 Les gens l'ont consulté

Comment écrire un programme simple de traitement dimage en C++ ?

Dans cet article, nous allons apprendre à écrire un programme simple de traitement d'image via C++. Nous couvrirons toutes les bases, de la lecture d'une image à l'application de filtres et à l'enregistrement de l'image.

Avant de commencer à écrire des programmes de traitement d'images, vous devez installer la bibliothèque OpenCV. OpenCV est une bibliothèque de vision par ordinateur populaire dotée de fonctionnalités riches pour vous aider à créer des applications de traitement d'images de haute qualité.

Étape 1 : Charger l'image

Pour charger une image, vous devez déclarer un objet OpenCV appelé Mat. Voici le code pour charger une image depuis un fichier :

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;

int main(int argc, char** argv){
    Mat image;
    image = imread(argv[1], IMREAD_COLOR);

    if(! image.data ) {
        std::cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    waitKey(0);
    return 0;
}
Copier après la connexion

Le code ci-dessus sera utilisé pour charger une image via OpenCV. Le programme lira d'abord le nom de fichier saisi à partir de la ligne de commande. Si le fichier n'est pas trouvé, l'utilisateur est informé que le fichier ne peut pas être ouvert ou trouvé.

Si l'image se charge avec succès, créez une fenêtre pour l'afficher. Utilisez la fonction imshow pour afficher l'image et utilisez waitKey pour attendre l'action de l'utilisateur, comme appuyer sur n'importe quelle touche du clavier pour fermer la fenêtre. imshow函数显示图像并使用waitKey等待用户操作,例如按下键盘上的任意键以关闭窗口。

步骤2:应用过滤器

现在我们已经加载了图像,接下来可以开始应用一些过滤器。OpenCV库提供了许多内置函数可以帮助我们应用各种过滤器,例如添加模糊效果,边缘检测或其它图像处理中常见的一些操作。

以下代码将向图像添加一个高斯模糊滤波器:

Mat blurred_image;
GaussianBlur(image, blurred_image, Size(7,7), 0);

namedWindow("Blurred Image", WINDOW_AUTOSIZE);
imshow("Blurred Image", blurred_image);

waitKey(0);
Copier après la connexion

首先,我们声明一个Mat对象来储存模糊后的图像。接下来,我们使用GaussianBlur函数应用高斯模糊。在函数中,第一个参数是要模糊的图像,第二个参数是将储存结果的Mat对象,第三个参数是模糊核的大小,第四个参数是标准差,可以选择将其设为0。

最后,我们在新窗口中显示模糊后的图像。

步骤3:保存图像

当您已经完成对图像的处理后,您可能想将结果保存到文件中。可以使用imwrite函数完成此操作。以下是代码示例:

imwrite("blur.jpg", blurred_image);
Copier après la connexion

这将把过滤完的模糊图像保存为blur.jpg

Étape 2 : Appliquer les filtres

Maintenant que l'image est chargée, nous pouvons commencer à appliquer certains filtres. La bibliothèque OpenCV fournit de nombreuses fonctions intégrées pour nous aider à appliquer divers filtres, tels que l'ajout d'effets de flou, la détection de contours ou d'autres opérations courantes dans le traitement d'images.

Le code suivant ajoutera un filtre de flou gaussien à l'image : 🎜
#include 
#include 

using namespace cv;

int main(int argc, char** argv){
    Mat image;
    image = imread(argv[1], IMREAD_COLOR);

    if(! image.data ) {
        std::cout <<  "Could not open or find the image" << std::endl;
        return -1;
    }

    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    Mat blurred_image;
    GaussianBlur(image, blurred_image, Size(7,7), 0);

    namedWindow("Blurred Image", WINDOW_AUTOSIZE);
    imshow("Blurred Image", blurred_image);

    imwrite("blur.jpg", blurred_image);

    waitKey(0);
    return 0;
}
Copier après la connexion
🎜Tout d'abord, nous déclarons un objet Mat pour stocker l'image floue. Ensuite, nous appliquons un flou gaussien en utilisant la fonction GaussianBlur. Dans la fonction, le premier paramètre est l'image à flouter, le deuxième paramètre est l'objet Mat qui stockera le résultat, le troisième paramètre est la taille du noyau de flou et le quatrième paramètre est l'écart type que vous pouvez choisir. pour le mettre à 0. 🎜🎜Enfin, nous affichons l'image floue dans une nouvelle fenêtre. 🎜🎜Étape 3 : Enregistrez l'image🎜🎜Lorsque vous avez terminé le traitement de l'image, vous souhaiterez peut-être enregistrer les résultats dans un fichier. Cela peut être fait en utilisant la fonction imwrite. Voici l'exemple de code : 🎜rrreee🎜Cela enregistrera l'image floue filtrée sous blur.jpg. 🎜🎜Exemple de code complet🎜rrreee🎜Dans cet article, nous avons appris à écrire un programme de traitement d'image simple à l'aide de la bibliothèque C++ et OpenCV. Vous pouvez l'étendre pour inclure davantage de filtres tels que la détection des contours, la netteté, etc. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal