Heim > Backend-Entwicklung > Python-Tutorial > CVWas ist ein Bild? Hier können Sie die Helligkeit und den Kontrast eines Bildes anpassen

CVWas ist ein Bild? Hier können Sie die Helligkeit und den Kontrast eines Bildes anpassen

Linda Hamilton
Freigeben: 2024-12-03 11:21:14
Original
935 Leute haben es durchsucht

Wenn Sie im Kontext von CV2 in Python ein Bild lesen, wird es als 2D- oder 3D-Array aus Y- und X-Koordinaten gespeichert, wobei uint8-Werte die Farbe und Helligkeit des Bildes angeben. Der Begriff uint8 bezieht sich auf einen 8-Bit-Integer-Datentyp ohne Vorzeichen, der von 0 bis 255 reicht. In Kombination mit drei Kanälen für Rot, Grün und Blau (RGB) entsteht ein Farbbild.

Warum diese Struktur wichtig ist

Wenn Sie beginnen, Teile des Bildes wie ein normales Array zu ändern (z. B. durch 3 teilen), verlieren Sie möglicherweise dieses Format. Beispielsweise können Pixelwerte außerhalb des Bereichs von 0 bis 255 liegen, wodurch das Bild unbrauchbar wird. Das Verständnis dieser Struktur ist entscheidend für die korrekte Bearbeitung von Bildern.

Ein Bild in CV2 anzeigen

In der CV2-Python-Bibliothek können Sie ein Bild ganz einfach mit dem folgenden Codeausschnitt anzeigen:

#pip install opencv-python # if not already installed 
import cv2

# Load an image
image = cv2.imread('./test.png')

# Display the image in a window
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Nach dem Login kopieren
Nach dem Login kopieren

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

Der obige Code öffnet ein Popup-Fenster, in dem das Bild auf Ihrem Computer angezeigt wird. Fühlen Sie sich frei, zum Testen eine URL zu Ihrem eigenen Bild hinzuzufügen. Anschließend können Sie hineinzoomen, um die RGB-Werte des Bildes auf Pixelebene zu beobachten. Diese Grundfunktionalität ist ein guter Ausgangspunkt für die Erkundung der Bildverarbeitung.

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

Helligkeit und Kontrast

Was sind Helligkeit und Kontrast?

  • Helligkeit bezieht sich auf die Gesamthelligkeit oder -dunkelheit eines Bildes, bestimmt durch die Pixelintensität.
  • Kontrast bezieht sich auf den Intensitätsunterschied zwischen Pixeln im Vergleich zu einem Referenzwert (z. B. der mittleren Pixelintensität). Es misst im Wesentlichen, wie „scharf“ oder „deutlich“ die Variationen im Bild sind.

Mathematisch können Helligkeit und Kontrast mit der Formel angepasst werden:

new_image=Kontrast×Bildhelligkeit

Anwenden von Helligkeit und Kontrast in CV2

Die Funktion cv2.convertScaleAbs() in OpenCV automatisiert diesen Prozess. Es wendet die obige Formel an und stellt gleichzeitig sicher, dass die Pixelwerte im Bereich von 0 bis 255 bleiben.

So funktioniert es:

  • Alpha (Kontrast): Ein Skalierungsfaktor, typischerweise zwischen 0,0 und 3,0.
  • Beta (Helligkeit): Ein Offsetwert, typischerweise zwischen -100 und 100

Beispielverwendung:
new_image = cv2.convertScaleAbs(image, alpha=contrast, beta=brightness)

Dadurch können wir Helligkeit und Kontrast einfach ändern, ohne Pixelwerte manuell zu beschneiden.

image = cv2.imread('./test.png')
cv2.namedWindow('Adjustments')
contrast=0.8
brightness=89
image=cv2.convertScaleAbs(image, alpha=contrast, beta=brightness)
cv2.imshow('Adjustments', image) 
cv2.waitKey(0)
cv2.destroyAllWindows()

Nach dem Login kopieren

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

Interaktive Anpassungen mit Callbacks erstellen

Während eine einmalige Anpassung nützlich ist, möchten wir meistens die Helligkeit und den Kontrast interaktiv anpassen. Mit OpenCV können wir dies mithilfe der Trackbar erreichen.

Trackbars können mit cv2.createTrackbar() erstellt werden, wodurch wir Werte dynamisch anpassen können. Die allgemeine Syntax lautet:
cv2.createTrackbar(trackbarname, winname, value, count, onChange_function)

  • Trackbarname: Der Name der Trackbar.
  • winname: Der Name des OpenCV-Fensters, in dem die Trackbar angezeigt wird.
  • Wert: Die Anfangsposition der Trackbar.
  • Anzahl: Der Maximalwert der Trackbar.
  • onChange_function: Eine Rückruffunktion, die immer dann aufgerufen wird, wenn sich der Trackbar-Wert ändert.

Diese Trackbar kann dann in der onChange_function mit;
aufgerufen werden cv2.getTrackbarPos(trackbarname, winname)
・trackbarname: Der Name der Trackbar
・ winname: Der Name des OpenCV-Fensters, in dem die Trackbar angezeigt wird.

Um sowohl Helligkeit als auch Kontrast anzupassen, benötigen wir zwei Trackbars.

#pip install opencv-python # if not already installed 
import cv2

# Load an image
image = cv2.imread('./test.png')

# Display the image in a window
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
Nach dem Login kopieren
Nach dem Login kopieren

CVWhat is an Image?, Lets adjust the Brightness and Contrast of an image

Das Anpassen der Kontrast- und Helligkeitsregler löst die Funktion on_change aus, die mithilfe von cv2.getTrackbarPos() die Werte aus den Trackbars liest. Diese Werte werden dann mit der Funktion cv2.convertScaleAbs auf das Bild angewendet und das aktualisierte Bild wird in Echtzeit angezeigt.

Um die App benutzerfreundlicher zu gestalten, habe ich am Ende einen einfachen Snippet hinzugefügt, der es Benutzern ermöglicht, die App durch Drücken der x-Taste zu verlassen. Dies behebt ein häufiges Problem bei OpenCV, bei dem das Schließen des Fensters nicht immer die Ausführung des Codes stoppt. Dadurch sorgt die App für einen sauberen Ausstieg ohne langwierige Prozesse.

Das obige ist der detaillierte Inhalt vonCVWas ist ein Bild? Hier können Sie die Helligkeit und den Kontrast eines Bildes anpassen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage