OpenCV Einstiegsbeispiel
Als Nächstes sehen wir uns ein einfaches OpenCV-Beispiel an. Wir werden die folgenden Funktionen implementieren:
Ein Bild einlesen.
Das Bild anzeigen.
Das Bild speichern.
Einfache Benutzerinteraktion hinzufügen.
Sie können das folgende Bild als Beispiel verwenden:

Der folgende Code ist in derdisplay_image.py-Datei gespeichert:
Beispiel (Python)
import cv2
# 1. Das Bild einlesen
# Ersetze dies durch den tatsächlichen Bildpfad, hier ist es "bird.jpg" im aktuellen Verzeichnis
image_path = "./bird.jpg"
image = cv2.imread(image_path)
# Prüfen, ob das Bild erfolgreich gelesen wurde
if image is None:
print(Fehler: Bild konnte nicht geladen werden, bitte überprüfen Sie, ob der Pfad korrekt ist.)
exit()
# 2. Das Bild anzeigen
# Erstelle ein Fenster namens "Bild anzeigen" und zeige das Bild darin an
cv2.imshow("Bild anzeigen", image)
# 3. Warten, bis der Benutzer eine Taste drückt
# Parameter 0 bedeutet, unbegrenzt zu warten, bis der Benutzer eine beliebige Taste drückt
key = cv2.waitKey(0)
# 4. Aktionen basierend auf dem Tastendruck des Benutzers ausführen
if key == ord('s'): # Wenn die Taste 's' gedrückt wird
# Bild speichern
output_path = "saved_image.jpg"
cv2.imwrite(output_path, image)
print(fBild gespeichert als {output_path})
else: # Wenn eine andere Taste gedrückt wird
print(Bild wurde nicht gespeichert.)
# 5. Alle Fenster schließen
cv2.destroyAllWindows()
python display_image.py
Ein Pop-up-Fenster wird wie folgt angezeigt:

Drücken Sie im angezeigten Bildfenster die Tastes, um das Bild zu speichern, oder drücken Sie eine beliebige andere Taste, um zu beenden.
Der C++-Code für das obige Beispiel lautet wie folgt:
Beispiel (C++)
#include <iostream>
using namespace cv;
using namespace std;
int main() {
// 1. Bild einlesen
// Ersetzen Sie durch den tatsächlichen Bildpfad, hier ist er "bird.jpg" im aktuellen Verzeichnis
string image_path = "./bird.jpg";
Mat image = imread(image_path);
// Prüfen, ob das Bild erfolgreich gelesen wurde
if (image.empty()) {
cout << Fehler: Bild kann nicht geladen werden, bitte überprüfen Sie, ob der Pfad korrekt ist. << endl;
return -1;
}
// 2. Bild anzeigen
// Erstellen Sie ein Fenster mit dem Namen "Display Image" und zeigen Sie das Bild darin an
namedWindow("Bild anzeigen", WINDOW_AUTOSIZE);
imshow("Bild anzeigen", image);
// 3. Warten, bis der Benutzer eine Taste drückt
// Parameter 0 bedeutet unbegrenzt warten, bis der Benutzer eine beliebige Taste drückt
int key = waitKey(0);
// 4. Aktionen basierend auf dem Tastendruck des Benutzers ausführen
if (key == 's') { // Wenn die Taste 's' gedrückt wird
// Das Bild speichern
string output_path = "saved_image.jpg";
imwrite(output_path, image);
cout << Bild gespeichert als << output_path << endl;
} else { // Wenn eine andere Taste gedrückt wird
cout << Bild wurde nicht gespeichert. << endl;
}
// 5. Alle Fenster schließen
destroyAllWindows();
return 0;
}
Erweiterte Übungen
Als Nächstes können wir versuchen, einige Codeänderungen vorzunehmen.
1. Ändern Sie den Fenstertitel:Ändern Sie "Display Image" in einen anderen Namen, zum Beispiel "My Image".
cv2.imshow("My Image", image)2. In einem anderen Format speichern:Ändern Sie "saved_image.jpg" in "saved_image.png" und beobachten Sie das gespeicherte Ergebnis.
# 4. 根据用户按键执行操作
if key == ord('s'): # 如果按下 's' 键
# 保存图像
output_path = "saved_image.png"
cv2.imwrite(output_path, image)
print(f"图像已保存为 {output_path}")
3. Fügen Sie weitere Interaktionen hinzu:Drücken Sie zum Beispiel die Taste 'q', um das Programm direkt zu beenden.
if key == ord('s'): # 如果按下 's' 键
# 保存图像
output_path = "saved_image.jpg"
cv2.imwrite(output_path, image)
print(f"图像已保存为 {output_path}")
elif key == ord('q'): # 如果按下 'q' 键
print("程序已退出。")
else: # 如果按下其他键
print("图像未保存,程序已退出。")
ord('q')Gibt den ASCII-Codewert des Zeichens'q'zurück.Wenn der Benutzer
'q'eine Taste drückt, geben Sie eine Hinweismeldung aus"The program has exited.", dann wird das Programm fortfahren,cv2.destroyAllWindows()das Fenster zu schließen und zu beenden.