Een afbeelding cartoonen met OpenCV - Python

Een afbeelding cartoonen met OpenCV - Python

Cartooning van een afbeelding verandert een normale foto in een leuke foto in geanimeerde stijl. Met OpenCV doen we dit door de afbeelding glad te maken om kleuren te vereenvoudigen en randen te detecteren om contouren te maken. Door deze stappen te combineren, lijkt de foto als een cartoon.

Vereisten:  OpenCV -module

Benadering

  • Lees de invoerafbeelding.
  • Converteer de afbeelding naar grijswaarden voor randdetectie.
  • Breng de mediane vervaging aan om geluid te verwijderen.
  • Gebruik adaptieve drempels om randen te detecteren.
  • Breng een bilateraal filter aan om de afbeelding glad te maken met behoud van randen.
  • Combineer het afgevlakte beeld met randen om het cartooneffect te produceren.

Python -implementatie

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

Uitvoer:

Input_imageOriginele afbeelding Cartoonuitvoerafbeelding

Uitleg:

  • cv2.cvtcolor () Converteert het beeld naar grijswaarden voor randdetectie.
  • CV2.MedianBlur () Verwijdert geluid voor schonere randen.
  • CV2.ADAPTIVETHRESHOLD () detecteert randen die een schetsachtig effect geven.
  • cv2.Bilateralfilter () s Mooths kleuren terwijl ze randen scherp houden.
  • cv2.bitwise_and () Combineert afgevlakte kleuren en randen voor het cartooneffect.