Heim > Artikel > Backend-Entwicklung > Wie führt man maschinelles Sehen und Bildverarbeitung in C++ durch?
Wie führt man maschinelles Sehen und Bildverarbeitung in C++ durch?
Machine Vision und Bildverarbeitung sind wichtige Zweige der Informatik und werden häufig in der Bilderkennung, Zielerkennung, Gesichtserkennung und anderen Bereichen eingesetzt. In C++ gibt es viele leistungsstarke Bibliotheken und Tools, die uns bei der Implementierung von Bildverarbeitungs- und Bildverarbeitungsfunktionen helfen können. In diesem Artikel wird die Verwendung der OpenCV-Bibliothek zur Durchführung von maschinellem Sehen und Bildverarbeitung in C++ vorgestellt und entsprechende Codebeispiele gegeben.
Bilder laden und anzeigen
Zuerst müssen wir ein Bild laden und es dann anzeigen. Hier ist ein einfaches Codebeispiel:
#include <opencv2/opencv.hpp> int main() { // 加载图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); // 检查图像是否成功加载 if (image.empty()) { std::cerr << "Failed to load image" << std::endl; return -1; } // 创建一个窗口并显示图像 cv::namedWindow("Image", cv::WINDOW_NORMAL); cv::imshow("Image", image); // 等待键盘输入 cv::waitKey(0); return 0; }
In diesem Beispiel verwenden wir die Funktion imread
函数加载一张图像,并将其存储在cv::Mat
对象中。然后,我们创建一个窗口,并使用imshow
函数显示图像。最后,使用waitKey
, um darauf zu warten, dass der Benutzer eine beliebige Taste drückt, bevor wir das Fenster schließen.
3.1 Anpassen von Helligkeit und Kontrast
#include <opencv2/opencv.hpp> int main() { // 加载图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_COLOR); // 将图像转换为浮点类型 cv::Mat image_float; image.convertTo(image_float, CV_32F); // 调整亮度和对比度 cv:: Mat adjusted_image = image_float * 1.2 + 20; // 将图像转换回无符号8位整数类型 cv::Mat output_image; adjusted_image.convertTo(output_image, CV_8U); // 创建一个窗口并显示图像 cv::namedWindow("Output", cv::WINDOW_NORMAL); cv::imshow("Output", output_image); // 等待键盘输入 cv::waitKey(0); return 0; }
In diesem Beispiel konvertieren wir das Bild zunächst in einen Gleitkommatyp und passen es dann an, indem wir es mit einem Faktor multiplizieren und einen Offset für Helligkeit und Addition hinzufügen Kontrast. Abschließend wird das Bild wieder in einen vorzeichenlosen 8-Bit-Integer-Typ konvertiert und das angepasste Bild angezeigt.
3.2 Kantenerkennung
#include <opencv2/opencv.hpp> int main() { // 加载图像 cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE); // 使用Canny算子进行边缘检测 cv::Mat edges; cv::Canny(image, edges, 100, 200); // 创建一个窗口并显示边缘图像 cv::namedWindow("Edges", cv::WINDOW_NORMAL); cv::imshow("Edges", edges); // 等待键盘输入 cv::waitKey(0); return 0; }
In diesem Beispiel konvertieren wir das Bild zunächst in ein Graustufenbild und verwenden dann den Canny-Operator zur Kantenerkennung. Abschließend zeigen wir das erkannte Kantenbild an.
Das Obige zeigt nur einen kleinen Teil der Funktionen der Bildverarbeitung. Die OpenCV-Bibliothek bietet auch viele andere leistungsstarke Bildverarbeitungs- und Bildverarbeitungsalgorithmen wie Bildsegmentierung, Merkmalsextraktion, Mustervergleich usw. Sie können die entsprechenden Funktionen und Methoden entsprechend Ihren spezifischen Anforderungen auswählen.
Zusammenfassend können wir C++- und OpenCV-Bibliotheken verwenden, um verschiedene Funktionen für maschinelles Sehen und Bildverarbeitung zu implementieren. Durch das Laden und Anzeigen von Bildern sowie die Anwendung unterschiedlicher Verarbeitungsvorgänge können wir viele interessante und praktische Anwendungen umsetzen. Wenn Sie sich für maschinelles Sehen und Bildverarbeitung interessieren, können Sie auch C++ und OpenCV verwenden, um weitere Möglichkeiten zu erkunden.
Das obige ist der detaillierte Inhalt vonWie führt man maschinelles Sehen und Bildverarbeitung in C++ durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!