opencv 패키지에는 사진을 카툰처럼, 만화처럼 바꿔주는 함수가 있습니다. 바로 cv2.stylization이란 함수입니다. 우선 이 함수를 이용해서 몇 개의 사진에 카툰 효과를 넣어보겠습니다.
진짜 뭔가 그린 것 같은 이미지가 되었죠? ㅎㅎ 이 방향(cartoonization)을 연구하는 사람도 꽤 많은 것 같습니다. 물론 요즘은 딥러닝 기반의 알고리즘들이 쏟아져 나오고 있고요.
이 연구의 매력은 영화를 한 순간에 만화 영화, 카툰 버전으로 만들 수 있다는 점입니다. 엄청나지 않나요?ㅋㅋ 몇 초만에 하나의 프레임을 카툰화시킬 수 있다는 것이 놀랍습니다. 사람이 한 컷 그리려면 적어도 몇 시간은 걸릴텐데 말이죠. 어쩌면 그림을 그리는 분들에게는 슬픈 소식일 수도 있겠습니다...ㅜ
아무튼 이 놀라운 기능이 opencv 패키지에서는 하나의 함수로 구현되어 있습니다. 다음과 같이 사용하면 됩니다.
cartoon_image = cv2.stylization(color_image, sigma_s=150, sigma_r=0.25)
이때 사용자가 조정가능한 두 개의 파라미터가 있습니다. 하나는 sigma_s라는 것이고, 다른 하나는 sigma_r이라는 것입니다. sigma_s는 이미지가 얼마나 스무스해질지를 결정해줍니다. 클수록 이미지가 더 스무스해집니다. 0에서 200까지의 값이 입력 가능합니다. sigma_r은 이미지가 스무스해지는 동안 엣지를 얼마만큼 보존시킬지를 결정해줍니다. 작을 수록 엣지가 많이 보존됩니다. 0에서 1까지 입력 가능합니다.
그런데 체감상 sigma_s를 변화시켰을 때는 큰 차이를 못 느끼겠고, sigma_r을 변화시켰을 때는 상당한 차이가 느껴집니다. sigma_s를 100으로 고정시킨 상태에서 sigma_r를 0.1, 0.5, 0.9로 변화시킨 결과를 보여드리겠습니다.
엣지를 많이 보존시켰을 때는 좀 더 잘생겨보이는 효과가 있는 것 같습니다(잘 생겼다고 말 안 했고, 잘 생겨보인다고 말했습니다ㅋㅋ). 엣지가 부각되어 그런 거 같습니다. 반면, 엣지를 많이 날렸을 때는 좀 뚱뚱해보이고 흐리멍텅해보이는 느낌이 있네요. 이래서 살을 빼야합니다....ㅋㅋ
다음은 간단한 예제 코드이니 참고하시기 바랍니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
import cv2
img = cv2.imread('test.jpg', cv2.IMREAD_COLOR)
cartoon_img = cv2.stylization(img, sigma_s=100, sigma_r=0.9)
cv2.imshow('original', img)
cv2.imshow('cartoon', cartoon_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.imwrite('cartoon_test.jpg', cartoon_img)
|
cs |
<참고자료>
[1] www.c-sharpcorner.com/article/cartoon-effect-and-pencil-sketch-using-open-cv-in-python/, C#Corner, "Cartoon Effect And Pencil Sketch Using Open CV In Python"
'Dev > python' 카테고리의 다른 글
[python] 웹캠 영상에서 검출된 얼굴들에 모자이크 효과 넣기 (10) | 2020.09.25 |
---|---|
[python] (M, N, 3) 형태의 넘파이행렬을 (M*N, 3)으로 바꾸려면? (0) | 2020.09.23 |
[python] 채워진 사각형 그리는 방법, cv2.rectangle 함수 활용 (0) | 2020.09.10 |
[python] 단방향 또는 양방향으로 화살표 있는 선 그리기, cv2.arrowedLine 함수 활용 (0) | 2020.09.09 |
[python+opencv] 이미지 회전시키기, cv2.rotate 함수 (2) | 2020.09.07 |
[python] 파이썬 set 집합 연산자 사용법 (0) | 2020.09.05 |
[python] 파이썬 IDLE 주석 처리 단축키(스파이더, 파이참, 코랩, vscode와 비교) (0) | 2020.09.04 |
[python] 딕셔너리에서 특정 값을 가진 키와 값 삭제하기 (0) | 2020.09.03 |