OpenCV Einstiegsbeispiel

Als Nächstes sehen wir uns ein einfaches OpenCV-Beispiel an. Wir werden die folgenden Funktionen implementieren:

  1. Ein Bild einlesen.

  2. Das Bild anzeigen.

  3. Das Bild speichern.

  4. 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)

# OpenCV-Bibliothek importieren
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()
Führen Sie den folgenden Befehl aus:
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 <opencv2/opencv.hpp>
#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.

Andere Erweiterungen