Attēla karikatūra pārvērš parasto fotoattēlu par jautru animācijas stila attēlu. Izmantojot OpenCV, mēs to darām, izlīdzinot attēlu, lai vienkāršotu krāsas un noteiktu malas, lai izveidotu kontūras. Apvienojot šīs darbības, fotogrāfija izskatās kā karikatūra.
Priekšnosacījumi: OpenCV modulis
Pieeja
- Izlasiet ievades attēlu.
- Pārvērtiet attēlu uz pelēktoņu, lai noteiktu malu.
- Uzklājiet vidējo izplūšanu, lai noņemtu troksni.
- Lai noteiktu malas, izmantojiet adaptīvo slieksni.
- Uzklājiet divpusēju filtru, lai izlīdzinātu attēlu, saglabājot malas.
- Apvienojiet izlīdzinātu attēlu ar malām, lai iegūtu karikatūras efektu.
Python ieviešana
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()
Izlaide:
Oriģināls attēls
Karikatūras izvades attēlsPaskaidrojums:
- cv2.cvtcolor () Pārveido attēlu pelēktosts, lai noteiktu malu.
- Cv2.medianblur () Noņem troksni tīrākām malām.
- cv2.AdaptiveThreshold () Atklāj malas, dodot skicei līdzīgu efektu.
- cv2.Bilateralfilter () s Mooths krāsas, vienlaikus turot malas asas.
- cv2.bitwise_and () Apvieno izlīdzinātas krāsas un malas karikatūras efektam.