728x90

이미지 처리에서 가장 기본이면서도 자주 쓰이는 기능이 바로 이미지 크기 조절(Image Resize) 입니다. OpenCV에서는 cv2.resize() 함수를 중심으로 다양한 방식의 스케일링(Scaling)과 보간법(Interpolation)을 제공하며, 이미지 전처리, 데이터 증강, 모델 입력 크기 맞춤 등 여러 작업에 활용됩니다.

이미지 크기 조절(Image Resize)

이미지 크기 조절이란 입력 이미지의 가로(width)·세로(height)를 원하는 크기나 비율로 변경하는 작업을 말합니다. 대표적으로 다음과 같은 목적에 사용됩니다.

  • 딥러닝 모델 입력 크기에 맞추기
  • 연산 속도 향상
  • 데이터 증강(Data Augmentation)
  • 특정 UI/UX를 위한 이미지 비율 조절
  • 다양한 해상도 디바이스 대응

OpenCV cv2.resize() 함수

✔ 기본 문법

cv2.resize(src, dsize, fx, fy, interpolation)

 

✔ 주요 파라미터 설명


src 입력 이미지
dsize 출력 해상도 (width, height). 직접 지정할 때 사용
fx / fy 가로/세로 방향 스케일 비율 (배율)
interpolation 보간법 선택 옵션

 

✔ 보간법(Interpolation) 종류


cv2.INTER_NEAREST 가장 빠름, 품질 낮음 속도 최우선
cv2.INTER_LINEAR 기본값, 품질/속도 균형 일반적인 이미지 크기 변환
cv2.INTER_AREA 축소에 강함(↓), 노이즈 억제 이미지 축소 시 추천
cv2.INTER_CUBIC 고품질 확대(↑), 상대적으로 느림 이미지 확대 시 추천
cv2.INTER_LANCZOS4 매우 고품질, 느림 고해상도 이미지 처리

 

✔ 스케일링 방식 2가지

① 절대 크기 지정 (dsize 사용)

dst = cv2.resize(img, (width, height))

② 비율 기반 크기 변경 (fx, fy 사용)

dst = cv2.resize(img, None, fx=0.5, fy=0.5)

  • 가로/세로를 각각 절반 크기로 축소.

 

OpenCV 이미지 크기 조절 예제

1) 이미지 읽기

import cv2

img = cv2.imread("sample.jpg")

 

2) 절대 크기(폭 300px, 높이 200px)로 변경

resize_fixed = cv2.resize(img, (300, 200), interpolation=cv2.INTER_LINEAR)

 

3) 가로/세로 0.5배 축소

resize_half = cv2.resize(img, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_AREA)

 

4) 2배 확대 (고품질 Cubic 보간)

resize_up = cv2.resize(img, None, fx=2.0, fy=2.0, interpolation=cv2.INTER_CUBIC)

 

5) 원본 비율 유지하며 특정 폭(Width) 기준으로 리사이즈

h, w = img.shape[:2]

target_width = 500

ratio = target_width / w

target_height = int(h * ratio)

resize_ratio = cv2.resize(img, (target_width, target_height), interpolation=cv2.INTER_LINEAR)

 

6) 결과 확인

cv2.imshow("Fixed Size", resize_fixed)

cv2.imshow("Half Size", resize_half)
cv2.imshow("Up Scale", resize_up)
cv2.imshow("Ratio Resize", resize_ratio)

cv2.waitKey(0) cv2.destroyAllWindows()

 

OpenCV에서 이미지 크기 조절은 간단해 보이지만, 보간법 선택, 비율 유지, 크기와 배율 선택 등에 따라 결과가 크게 달라질 수 있습니다. 특히 딥러닝 전처리 과정에서는 성능에도 영향을 미치기 때문에 목적에 맞는 보간법을 선택하는 것이 중요합니다.

728x90

+ Recent posts