Cartooning van een afbeelding verandert een normale foto in een leuke foto in geanimeerde stijl. Met OpenCV doen we dit door de afbeelding glad te maken om kleuren te vereenvoudigen en randen te detecteren om contouren te maken. Door deze stappen te combineren, lijkt de foto als een cartoon.
Vereisten: OpenCV -module
Benadering
- Lees de invoerafbeelding.
- Converteer de afbeelding naar grijswaarden voor randdetectie.
- Breng de mediane vervaging aan om geluid te verwijderen.
- Gebruik adaptieve drempels om randen te detecteren.
- Breng een bilateraal filter aan om de afbeelding glad te maken met behoud van randen.
- Combineer het afgevlakte beeld met randen om het cartooneffect te produceren.
Python -implementatie
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()
Uitvoer:
Originele afbeelding
CartoonuitvoerafbeeldingUitleg:
- cv2.cvtcolor () Converteert het beeld naar grijswaarden voor randdetectie.
- CV2.MedianBlur () Verwijdert geluid voor schonere randen.
- CV2.ADAPTIVETHRESHOLD () detecteert randen die een schetsachtig effect geven.
- cv2.Bilateralfilter () s Mooths kleuren terwijl ze randen scherp houden.
- cv2.bitwise_and () Combineert afgevlakte kleuren en randen voor het cartooneffect.