본문 바로가기
파이썬 (Python)/딥러닝 (Deep Learning)

Python opencv 이용하여 이미지 크기 조절하는 방법

by ★√★ 2021. 2. 21.

안녕하세요, Davey입니다. 오늘 포스팅할 내용은 opencv로 이미지를 불러올 때 불러온 이미지 크기를 조절해서 불러오는 방법에 대한 것입니다. 2가지 방법을 통해서 설명 드리도록 하겠습니다. 

 

 

 

1. opencv 라이브러리 선언 및 이미지 경로 지정

 

: 일단 opencv 라이브러리를 선언을 하고 이미지 경로를 지정해서 원본 이미지를 불러와보도록 하겠습니다. 이 부분은 이미 전 포스팅에서 다뤘긴 했지만 필수적으로 사용해야하는 코드 부분이기에 반복적으로 수행하도록 하겠습니다. 관련 내용은 자세히는 안 다루고 코드만 포스팅하도록 하겠습니다. 자세한 내용은 이전 포스팅한 링크를 통해서 참조 하시면 더 이해가 빠르실 겁니다. 

 

Python opencv 이용하여 이미지 출력 하는 방법

 안녕하세요, Davey입니다. 오늘 포스팅할 내용은 python의 opencv 라이브러리를 이용하여 이미지 출력하는 방법에 대해서 설명 드리도록 하겠습니다. 이미지를 로딩하고 변화시키는 부분까지 설명

davey.tistory.com

#라이브러리 선언
import cv2

#해당 이미지를 읽어서 test_img 변수에 입력함
test_img =cv2.imread('001.png', cv2.IMREAD_COLOR)

#팝업 창의 윈도우 타이블을 설정합니다. 
cv2.namedWindow('test title')

#보여줄 해당 이미지를 변수로 받아서 보여줌
cv2.imshow('test title',test_img)

#아무키나 누르면 닫아질 수 있게 화면이 사라지지 않고 기다립니다.
cv2.waitKey(0)

 

 

2. opencv를 통해서 이미지 크기 조절하기

 

: 위 1번 항목에 기재된 코드를 이용하면 원본 크기의 이미지가 출력이 되는 걸 확인 하실 수 있습니다. 그런데 원래 원본의 크기가 너무 크게 되면 출력이 되었을 때 너무 보기가 싫고, 자체적으로 출력되는 것을 따로 캡처해서 추가 편집을 해야 합니다. 그래서 출력이 될 때 원하는 크기에 맞게 출력이 될 수 있게 조정 코드를 넣어 줘야 합니다. 조절할 수 있는 방법에는 2가지가 있습니다. 

 

1) 이미지 크기를 직접적으로 입력 + 보간법을 사용하여 픽셀을 조정하는 방법

: 아래 코드를 간단하게 설명 드리면 아래와 같습니다. 

 

 - v2.resize(원본 이미지 경로를 받은 변수, 결과 이미지 크기, 보간법)

 

결과 이미지는 Tuple형으로 직접적으로 너비와 높이 순으로 입력을 하였고, 보간법을 사용하여 변형된 크기에 맞춰서 픽셀을 추정하여 적용하는 방법입니다.

test_resize = cv2.resize(test_img, dsize=(500, 500), interpolation=cv2.INTER_AREA)

cv2.imshow("test_resize", test_resize)

 

2) 원본 이미지 크기 비율 입력을 통한 이미지 크기 조정방법

: 위 1번 방법은 직접적인 크기 수치를 입력을 하였는데, 이번 2번 방법은 이미지의 크기 비율을 이용하여 이미지 크기를 조절하는 방식입니다. 정확한 수치를 모르고 대충 어느 정도만 수정이 되었으면 하는 사람에게는 2번방법이 더 맞을 수도 있을 거 같습니다. 

 

- 관련 코드는 아래와 같고, 추가적으로 코드에 대해서 설명도 기재하였습니다. 

 

test_resize2 = cv2.resize(test_img, dsize=(0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)

cv2.imshow("test_resize2", test_resize2)

- cv2.resize(원본 이미지 경로를 받은 변수,, dsize=(0, 0), 가로비, 세로비, 보간법)

 

위의 1번 항목과 비교해서 보간법을 사용한 것은 공통적인 요소입니다. 위의 입력한 수치를 통해서 추가 설명 드리면, 

fx 0.5인 경우, 원본 이미지 너비의 0.5배로 변경 / fy 0.5인 경우, 원본 이미지 높이의 0.5배로 변경됩니다.

 

보간법에 대해서 아래와 같이 속성값 정리하였습니다.

 

보간법 속성

의미

cv2.INTER_NEAREST

이웃 보간법

cv2.INTER_LINEAR

선형 보간법

cv2.INTER_LINEAR_EXACT

비트 선형 보간법

cv2.INTER_CUBIC

바이큐빅 보간법

cv2.INTER_AREA

영역 보간법

cv2.INTER_LANCZOS4

Lanczos 보간법

 

- 보통  선형 보간법 가장 많이 사용됩니다. 확대와 축소시에는 아래 사항을 주로 사용하는 것도 참조하세요.

1) 이미지를 확대하는 경우 : 바이큐빅 보간법,  선형 보간법 가장 많이 사용

2) 이미지를 축소하는 경우 : 영 보간법 가장 많이 사용

[영역 보간법에서 이미지를 확대하는 경우이웃 보간법 비슷한 결과를 반환함]

 

- 출력하게 되면 아래와 같이 제각각 설정한 이미지 크기 대로 출력이 되는 걸 확인 하실 수 있습니다. 

 

 

 

3. 맺음말

 

: 이상입니다. 오늘은 opencv로 이미지를 불러올 때 불러온 이미지 크기를 조절해서 불러오는 2가지 방법에 대해서 설명 드렸습니다. 일단 크기까지는 다루고 나니 먼가 배운 거 같은 느낌이 듭니다. 추가적으로 수행하게 되면 자유자재로 이미지를 인식하고 다룰 수 있다는 기대감이 드네요. 그럼 여기에서 마무리하고 추가 공부 후 다음 포스팅에서 찾아 뵙도록 하겠습니다. 감사합니다.

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.


[저작권이나권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다검토  수정  삭제 조치 하도록 하겠습니다그리고기재되는 내용은 개인적으로 습득한 내용이므로 오류가 발생할  있을 가능성이 있으므로기재된 내용은 참조용으로만 봐주시길 바랍니다게시물에오류가 있을때도, Comment 달아 주시면검증 결과를 통해수정하도록 하겠습니다.]

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab