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; }
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);
首先,我们声明一个Mat对象来储存模糊后的图像。接下来,我们使用GaussianBlur
函数应用高斯模糊。在函数中,第一个参数是要模糊的图像,第二个参数是将储存结果的Mat对象,第三个参数是模糊核的大小,第四个参数是标准差,可以选择将其设为0。
最后,我们在新窗口中显示模糊后的图像。
步骤3:保存图像
当您已经完成对图像的处理后,您可能想将结果保存到文件中。可以使用imwrite
函数完成此操作。以下是代码示例:
imwrite("blur.jpg", blurred_image);
这将把过滤完的模糊图像保存为blur.jpg
#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; }
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!