La caricature d'une image transforme une photo normale en une image amusante de style animé. Avec OpenCV, nous le faisons en lissant l'image pour simplifier les couleurs et la détection des bords pour créer des contours. La combinaison de ces étapes fait ressembler la photo à un dessin animé.
Prérequis: Module opencv
Approche
- Lisez l'image d'entrée.
- Convertissez l'image en niveaux de gris pour la détection des bords.
- Appliquer un flou médian pour éliminer le bruit.
- Utilisez le seuil adaptatif pour détecter les bords.
- Appliquez un filtre bilatéral pour lisser l'image tout en préservant les bords.
- Combinez l'image lissée avec des bords pour produire l'effet de dessin animé.
Implémentation de Python
Pythonimport 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()
Sortir:
Image originale
Image de sortie de dessin animéExplication:
- cv2.cvtColor () convertit l'image en niveaux de gris pour la détection des bords.
- Cv2.medianblur () Supprime le bruit pour les bords plus propres.
- CV2.AdaptiveThReshold () détecte les bords donnant un effet semblable à un croquis.
- cv2.bilateralfilter () s Les couleurs de Mooths tout en gardant les bords tranchants.
- cv2.bitwise_and () combine des couleurs et des bords lissés pour l'effet de dessin animé.