Kartoon eines Bildes mit OpenCV - Python

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:

Input_imageOriginalbild 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.