OpenCV -Python을 사용하여 이미지 만화

OpenCV -Python을 사용하여 이미지 만화

이미지 만화는 일반적인 사진을 재미있는 애니메이션 스타일 사진으로 바꿉니다. OpenCV를 사용하면 이미지를 부드럽게하여 색상을 단순화하고 가장자리를 감지하여 윤곽선을 만듭니다. 이 단계를 결합하면 사진이 만화처럼 보입니다.

전제 조건 :  OpenCV 모듈

접근하다

  • 입력 이미지를 읽으십시오.
  • 에지 감지를 위해 이미지를 그레이 스케일로 변환하십시오.
  • 소음을 제거하기 위해 중간 흐림 흐림을 적용하십시오.
  • 적응 형 임계 값을 사용하여 가장자리를 감지하십시오.
  • 모서리를 보존하는 동안 이미지를 부드럽게하기 위해 양측 필터를 바르십시오.
  • 매끄러운 이미지를 가장자리와 결합하여 만화 효과를 생성하십시오.

파이썬 구현

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  ()   

산출:

input_image원본 이미지 만화 출력 이미지

설명:

  • cv2.cvtcolor () 에지 감지를 위해 이미지를 그레이 스케일로 변환합니다.
  • cv2.medianblur () 클리너 가장자리의 노이즈를 제거합니다.
  • cv2. adaptiveThreshold () 스케치와 같은 효과를주는 모서리를 감지합니다.
  • cv2.bilateralfilter () s 가장자리를 날카롭게 유지하면서 화려합니다.
  • cv2.bitwise_and () 만화 효과를 위해 매끄러운 색상과 가장자리를 결합합니다.