OpenCV - Python kullanarak bir görüntüyü çizgi film

OpenCV - Python kullanarak bir görüntüyü çizgi film

Bir görüntünün karikatürünü yapmak normal bir fotoğrafı eğlenceli bir animasyon tarzı resme dönüştürür. OpenCV ile bunu, renkleri basitleştirmek için görüntüyü düzelterek ve ana hatlar oluşturmak için kenarları algılayarak yaparız. Bu adımları birleştirmek fotoğrafı bir çizgi film gibi gösteriyor.

Önkoşul:  OpenCV modülü

Yaklaşmak

  • Giriş görüntüsünü okuyun.
  • Kenar algılama için görüntüyü gri tonlamaya dönüştürün.
  • Gürültüyü gidermek için medyan bulanıklık uygulayın.
  • Kenarları tespit etmek için uyarlanabilir eşik kullanın.
  • Kenarları korurken görüntüyü yumuşatmak için iki taraflı bir filtre uygulayın.
  • Karikatür etkisini üretmek için düzgün görüntüyü kenarlarla birleştirin.

Python uygulaması

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

Çıktı:

İnput_imageOrijinal Resim Karikatür Çıktı Görüntüsü

Açıklama:

  • cv2.cvtcolor () Kenar algılama için görüntüyü gri tonlamaya dönüştürür.
  • CV2.medianBlur () temiz kenarlar için gürültüyü kaldırır.
  • CV2.Adaptivetheshold () Eskiz benzeri bir etki veren kenarları tespit eder.
  • CV2.bilateralFilter () S Kenarları keskin tutarken renkleri renklendirir.
  • cv2.bitwise_and () Karikatür efekti için düzeltilmiş renkleri ve kenarları birleştirir.