파이썬/OpenCV

이미지의 크기 변환 cv2.resize()

코샵 2022. 11. 17. 22:09
반응형
이미지의 사이즈를 변환시키는 cv2의 함수 resize를 알아 보도록 합시다
cv2.resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None) -> dst
• src : 이미지(input)     
• dsize :  변환 시킬 이미지 크기(output) , (w,h) 튜플로 사용하며 (0,0)이면 fx와 fy 값으로 결정함
• dst : 출력 이미지
• fx, fy :  스케일 비율. dsize 값이 0일때 유효
ex) 이미지 크기가 1920* 1080 일때 fx=0.5, fy=0.5 이면 960*540 크기로 변환을 의미
• interpolation : 보간법. 기본값은 INTER_LINEAR
보간법 종류
사이즈가 변할 때 pixel 사이의 값을 결정 해야 하는데 이때 사용하는 것을 보간법이라고 한다
INTER_NEAREST 최근방 이웃 보간법 가장 빠르지만 성능이 떨어집니다
INTER_LINEAR 쌍 선형 보간법 효율이 뛰어남. 속도와 성능 준수. 확대시 주로 사용. 4개의 픽셀 이용
INTER_CUBIC 바이큐빅 보간법 쌍 선형보다 느리지만 성능이 더 우수. 확대시 주로 사용. 16개의 픽셀 이용
INTER_LANCZOS4 Lanczos 보간법 속도는 느리지만 성능이 매우 좋음. 64개의 픽셀 이용
INTER_AREA 영역 보간법 영역의 특징을 추출하여 결과를 지정. 축소시 주로 사용
주로 사용되는 보간법

사이즈를 축소할 경우 : cv2.INTER_AREA

사이즈를 확대할 경우 : cv2.INTER_CUBIC, cv2.INTER_LINEAR

 

예시

영역 보간법으로 640*427 이미지를 320*214 사이즈로 축소 ( fx = 0.5, fy = 0.5)

NEAREST와 다른 보간법의 화질 차이가 큰 것이 한눈에 보입니다

나머지는 큰 차이를 느끼지 못해 보통 속도도 빠르고 퀄리티가 괜찮은 LINEAR를 많이 사용합니다