logo

Cartooning en bild med OpenCV - Python

Cartooning En bild förvandlar ett normalt foto till en rolig animerad bild. Med OpenCV gör vi detta genom att jämna ut bilden för att förenkla färger och upptäcka kanter för att skapa konturer. Att kombinera dessa steg gör att fotot ser ut som en tecknad film.

Förutsättningar:  OpenCV -modul

Närma sig

  • Läs inmatningsbilden.
  • Konvertera bilden till gråskala för kantdetektering.
  • Applicera median oskärpa för att ta bort brus.
  • Använd adaptiv tröskel för att upptäcka kanter.
  • Applicera ett bilateralt filter för att jämna ut bilden medan du bevarar kanter.
  • Kombinera den utjämnade bilden med kanter för att producera tecknadseffekten.

Python -implementering

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() 

Produktion:



Input_image' title=Originalbild ' loading='lazy' title=Tecknad utgångsbild

Förklaring:

  • cv2.cvtcolor () Konverterar bilden till gråskala för kantdetektering.
  • Cv2.medianBlur () Tar bort brus för renare kanter.
  • cv2.adaptivethreshold () Upptäcker kanter ger en skissliknande effekt.
  • cv2.bilateralfilter () s Mooths färger medan du håller kanterna skarpa.
  • cv2.bitwise_and () Kombinerar utjämnade färger och kanter för tecknadseffekten.