OpenCV

[OpenCV] 이미지 처리 (resize)

괜찮나요닝겐 2024. 8. 17. 19:00
728x90
반응형

보통 딥러닝을 할 때 input 이미지 크기를 작게 만들어서 학습한다. 아무래도 이미지가 크면 연산량도 많아지고, 모델도 커질 수 밖에 없기 때문이다. 

 

import cv2

# 이미지 읽기
image = cv2.imread('/my_dir/my_image.png')

# resize 하기
# cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None)
resized = cv2.resize(image, dsize=(224,224))

 

cv2.resize를 할때 보간법(interpolation)을 옵션으로 사용할 수 있는데, 

 

  • cv2.INTER_NEAREST: 가장 가까운 픽셀 값을 사용하여 빠르게 처리하지만, 이미지 확대 시 계단 현상이 발생할 수 있다.
  • cv2.INTER_LINEAR: 2x2 픽셀을 사용하여 선형 보간을 수행. 일반적인 확대 및 축소 작업에 적합하며 속도와 품질의 균형이 좋다.
  • cv2.INTER_CUBIC: 4x4 픽셀을 사용하여 3차 보간을 수행. 이미지 확대 시 더 부드러운 결과를 제공하지만, 처리 속도는 느리다.
  • cv2.INTER_LANCZOS4: 8x8 픽셀을 사용하는 Lanczos 보간법. 고해상도 확대에 최적이며 품질이 매우 높지만, 가장 느리다.
  • cv2.INTER_AREA: 이미지 축소에 적합. 픽셀의 영역을 평균화하여 품질을 유지하면서 축소한다.

학습시 inter_linear를 주로 사용한다. interpolation 적용은 아래와 같이 하면 된다.

 

# interpolation 적용하기
resized = cv2.resize(image, dsize=(224,224),interpolation=cv2.INTER_LINEAR)

 

 

728x90
반응형