Computer Vision/opencv(python)

[28] 2) 영상의 확대와 축소

jwjwvison 2021. 3. 20. 00:55
  • 크기 변환 (Scale transformation)
    • 영상의 크기를 원본 영상보다 크게 또는 작게 만드는 변환
    • x축과 y축 방향으로의 스케일 비율(scale factor)을 지정

 

  • 영상의 크기 변환
cv2.resize(src,dsize,dst=None,fx=None,fy=None,interpolation=None) -> dst

 • src: 입력 영상
 • dsize : 결과 영상 크기 . (w, h) 튜플 . (0,0) 이면 fx 와 fy 값을 이용하여 결정
 • dst: 출력 영상
 • fx , fy : x 와 y 방향 스케일 비율 (scale factor). dsize 값이 0 일 때 유효
 • interpolation: 보간법 지정 . 기본값은 cv2.INTER_LINEAR

 

  • 영상의 크기 변환 예제
import sys
import numpy as np
import cv2


src = cv2.imread('rose.bmp') # src.shape=(320, 480) == # 480 x 320

if src is None:
    print('Image load failed!')
    sys.exit()

dst1=cv2.resize(src,(0,0),fx=4,fy=4,interpolation=cv2.INTER_NEAREST)
dst2=cv2.resize(src,(1920,1280))
dst3=cv2.resize(src,(1920,1280),interpolation=cv2.INTER_CUBIC)      #1,2번 보다 품질이 좋다, 시간이 좀 걸림
dst4=cv2.resize(src,(1920,1280),interpolation=cv2.INTER_LANCZOS4)   #시간이 많이 걸림, 품질 좋음


cv2.imshow('src',src)
cv2.imshow('dst1',dst1[500:900,400:800])    #사이즈 조절
cv2.imshow('dst2',dst2[500:900,400:800])
cv2.imshow('dst3',dst3[500:900,400:800])
cv2.imshow('dst4',dst4[500:900,400:800])
cv2.waitKey()
cv2.destroyAllWindows()

 

 

  • 영상의 축소 시 고려할 사항
    • 영상 축소 시 디테일이 사라지는 경우가 발생 (한 픽셀로 구성된 성분)
    • 입력 영상을 부드럽게 필터링한 후 축소, 다단계 축소
    • opneCV의 cv2.resize() 함수에서는 cv2.INTER_AREA 플래그를 사용\

 

  • 영상의 대칭 변환 (flip, reflection)
cv2.flip(src,flipCode,dst=None) -> dst