Kreskówka obrazu za pomocą openCV - Python

Kreskówka obrazu za pomocą openCV - Python

Kartonowanie obrazu zamienia normalne zdjęcie w zabawny obraz animowany. Dzięki OpenCV robimy to, wygładzając obraz w celu uproszczenia kolorów i wykrywania krawędzi w celu utworzenia konturów. Łączenie tych kroków sprawia, że ​​zdjęcie wygląda jak kreskówka.

Wymagania wstępne:  Moduł OpenCV

Zbliżać się

  • Przeczytaj obraz wejściowy.
  • Konwertuj obraz na skalę szarości do wykrywania krawędzi.
  • Zastosuj medianę rozmycia, aby usunąć hałas.
  • Użyj progów adaptacyjnych do wykrywania krawędzi.
  • Nałóż filtr dwustronny, aby wygładzić obraz podczas zachowania krawędzi.
  • Połącz wygładzony obraz z krawędziami, aby uzyskać efekt kreskówki.

Wdrożenie Pythona

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

Wyjście:

Input_imageOryginalny obraz Obraz wyjściowy z kreskówek

Wyjaśnienie:

  • cv2.cvtcolor () przekształca obraz w skalę szarości do wykrywania krawędzi.
  • CV2.Medianblur () Usuwa hałas dla czystszych krawędzi.
  • cv2.adaptiveThreshold () Wykrywa krawędzie, co daje efekt podobny do szkicu.
  • CV2.BilateralFilter () s Kolory MOOTHSS, zachowując ostre krawędzie.
  • CV2.BITSE_AND () Łączy wygładzone kolory i krawędzie dla efektu kreskówek.