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.
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.
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()
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.
Mathematisch können Helligkeit und Kontrast mit der Formel angepasst werden:
new_image=Kontrast×Bildhelligkeit
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:
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()
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)
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()
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!