Attēla karikatūra, izmantojot OpenCV - Python

Attēla karikatūra, izmantojot OpenCV - Python

Attēla karikatūra pārvērš parasto fotoattēlu par jautru animācijas stila attēlu. Izmantojot OpenCV, mēs to darām, izlīdzinot attēlu, lai vienkāršotu krāsas un noteiktu malas, lai izveidotu kontūras. Apvienojot šīs darbības, fotogrāfija izskatās kā karikatūra.

Priekšnosacījumi:  OpenCV modulis

Pieeja

  • Izlasiet ievades attēlu.
  • Pārvērtiet attēlu uz pelēktoņu, lai noteiktu malu.
  • Uzklājiet vidējo izplūšanu, lai noņemtu troksni.
  • Lai noteiktu malas, izmantojiet adaptīvo slieksni.
  • Uzklājiet divpusēju filtru, lai izlīdzinātu attēlu, saglabājot malas.
  • Apvienojiet izlīdzinātu attēlu ar malām, lai iegūtu karikatūras efektu.

Python ieviešana

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

Izlaide:

Input_imageOriģināls attēls Karikatūras izvades attēls

Paskaidrojums:

  • cv2.cvtcolor () Pārveido attēlu pelēktosts, lai noteiktu malu.
  • Cv2.medianblur () Noņem troksni tīrākām malām.
  • cv2.AdaptiveThreshold () Atklāj malas, dodot skicei līdzīgu efektu.
  • cv2.Bilateralfilter () s Mooths krāsas, vienlaikus turot malas asas.
  • cv2.bitwise_and () Apvieno izlīdzinātas krāsas un malas karikatūras efektam.