Kartoon eines Bildes mit OpenCV - Python
Wenn Sie ein Bild kartoonieren, verwandelt sich ein normales Foto in ein lustiges Bild im Animationsstil. Mit OpenCV tun wir dies, indem wir das Bild glätten, um die Farben zu vereinfachen und Kanten zu erkennen, um Umrisse zu erstellen. Wenn Sie diese Schritte kombinieren, sieht das Foto wie ein Cartoon aus.
Voraussetzungen: OpenCV -Modul
Ansatz
- Lesen Sie das Eingabebild.
- Konvertieren Sie das Bild in Graustufen zur Kantenerkennung.
- Tragen Sie die mediane Unschärfe auf, um Geräusche zu entfernen.
- Verwenden Sie adaptive Schwellenwert, um Kanten zu erkennen.
- Wenden Sie einen bilateralen Filter an, um das Bild zu glätten, während die Kanten erhalten bleiben.
- Kombinieren Sie das geglättete Bild mit Kanten, um den Cartoon -Effekt zu erzeugen.
Python -Implementierung
Python import cv2 img = cv2 . imread ( 'Screenshot.webp' ) if img is None : print ( 'Image not found' ) exit () # Prep grayscale & blur g = cv2 . cvtColor ( img cv2 . COLOR_BGR2GRAY ) g = cv2 . medianBlur ( g 5 ) # Edges e = cv2 . adaptiveThreshold ( g 255 cv2 . ADAPTIVE_THRESH_MEAN_C cv2 . THRESH_BINARY 9 9 ) # Smooth color c = cv2 . bilateralFilter ( img 9 250 250 ) # Combine cartoon = cv2 . bitwise_and ( c c mask = e ) cv2 . imshow ( 'Cartoon' cartoon ) cv2 . imwrite ( 'cartoon_output.webp' cartoon ) cv2 . waitKey ( 0 ) cv2 . destroyAllWindows ()
Ausgabe:
Originalbild
Cartoon Ausgabebild Erläuterung:
- cv2.cvtcolor () Konvertiert das Bild zur Kantenerkennung in Graustufen.
- Cv2.medianblur () Entfernt Geräusche für sauberere Kanten.
- cv2.adaptivethreshold () erkennt Kanten, die einen skizzenähnlichen Effekt geben.
- CV2.BilateralFilter () s Farben auf den Randen scharfen.
- cv2.bitwise_and () Kombiniert geglättete Farben und Kanten für den Cartoon -Effekt.