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:
Oryginalny 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.