Tegneserie et billede ved hjælp af OpenCV - Python

Tegneserie et billede ved hjælp af OpenCV - Python

Tegneserie et billede gør et normalt foto til et sjovt animeret stil billede. Med OpenCV gør vi dette ved at udjævne billedet for at forenkle farver og detektere kanter for at skabe konturer. At kombinere disse trin får billedet til at ligne en tegneserie.

Forudsætninger:  OpenCV -modul

Nærme sig

  • Læs inputbilledet.
  • Konverter billedet til gråskala til kantdetektion.
  • Påfør median sløring for at fjerne støj.
  • Brug adaptiv tærskel til at detektere kanter.
  • Påfør et bilateralt filter for at udjævne billedet, mens du bevarer kanterne.
  • Kombiner det udjævnede billede med kanter for at producere tegneserieffekten.

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_imageOriginalt billede Tegneserieudgangsbillede

Forklaring:

  • cv2.cvtcolor () Konverterer billedet til gråskala til kantdetektion.
  • Cv2.medianblur () Fjerner støj til renere kanter.
  • cv2.adaptivethreshold () Registrerer kanterne, der giver en skisselignende effekt.
  • cv2.bilateralfilter () s Mooths farver, mens de holder kanterne skarpe.
  • cv2.bitwise_and () Kombinerer udjævnede farver og kanter til tegneserieffekten.