In diesem Artikel lernen wir, wie man ein einfaches Bildverarbeitungsprogramm mit C++ schreibt. Wir behandeln alle Grundlagen vom Lesen eines Bildes über die Anwendung von Filtern bis hin zum Speichern des Bildes.
Bevor Sie mit dem Schreiben von Bildverarbeitungsprogrammen beginnen, müssen Sie die OpenCV-Bibliothek installieren. OpenCV ist eine beliebte Computer-Vision-Bibliothek mit umfangreichen Funktionen, die Sie bei der Erstellung hochwertiger Bildverarbeitungsanwendungen unterstützen.
Schritt 1: Bild laden
Um ein Bild zu laden, müssen Sie ein OpenCV-Objekt namens Mat deklarieren. Hier ist der Code zum Laden eines Bildes aus einer Datei:
#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; }
Der obige Code wird verwendet, um ein Bild über OpenCV zu laden. Das Programm liest zunächst den über die Befehlszeile eingegebenen Dateinamen. Wenn die Datei nicht gefunden wird, wird dem Benutzer mitgeteilt, dass die Datei nicht geöffnet oder gefunden werden kann.
Wenn das Bild erfolgreich geladen wird, erstellen Sie ein Fenster, um es anzuzeigen. Verwenden Sie die Funktion imshow
, um das Bild anzuzeigen, und warten Sie mit waitKey
auf eine Benutzeraktion, z. B. das Drücken einer beliebigen Taste auf der Tastatur, um das Fenster zu schließen. 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
an. In der Funktion ist der erste Parameter das zu verwischende Bild, der zweite Parameter ist das Mat-Objekt, das das Ergebnis speichert, der dritte Parameter ist die Größe des Unschärfekerns und der vierte Parameter ist die Standardabweichung um es auf 0 zu setzen. 🎜🎜Schließlich zeigen wir das unscharfe Bild in einem neuen Fenster an. 🎜🎜Schritt 3: Speichern Sie das Bild🎜🎜Wenn Sie mit der Bearbeitung des Bildes fertig sind, möchten Sie die Ergebnisse möglicherweise in einer Datei speichern. Dies kann mit der Funktion imwrite
erfolgen. Hier ist das Codebeispiel: 🎜rrreee🎜Dadurch wird das gefilterte Unschärfebild als blur.jpg
gespeichert. 🎜🎜Vollständiges Codebeispiel🎜rrreee🎜In diesem Artikel haben wir gelernt, wie man ein einfaches Bildverarbeitungsprogramm mit C++ und der OpenCV-Bibliothek schreibt. Sie können es um weitere Filter wie Kantenerkennung, Schärfung usw. erweitern. 🎜Das obige ist der detaillierte Inhalt vonWie schreibe ich ein einfaches Bildverarbeitungsprogramm in C++?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!