안녕하세요, Davey입니다. 오늘 포스팅할 내용은 opencv로 이미지를 불러올 때 불러온 이미지 크기를 조절해서 불러오는 방법에 대한 것입니다. 2가지 방법을 통해서 설명 드리도록 하겠습니다.
1. opencv 라이브러리 선언 및 이미지 경로 지정
: 일단 opencv 라이브러리를 선언을 하고 이미지 경로를 지정해서 원본 이미지를 불러와보도록 하겠습니다. 이 부분은 이미 전 포스팅에서 다뤘긴 했지만 필수적으로 사용해야하는 코드 부분이기에 반복적으로 수행하도록 하겠습니다. 관련 내용은 자세히는 안 다루고 코드만 포스팅하도록 하겠습니다. 자세한 내용은 이전 포스팅한 링크를 통해서 참조 하시면 더 이해가 빠르실 겁니다.
#라이브러리 선언
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 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > 딥러닝 (Deep Learning)' 카테고리의 다른 글
Python opencv 이용하여 이미지 회전해서 출력하는 방법 (1) | 2021.02.22 |
---|---|
Python opencv 이용하여 이미지 대칭 시켜서 출력 하는 방법 (2) | 2021.02.22 |
Python opencv 이용하여 카메라 출력 하는 방법 + 이미지 연속으로 출력 하는 방법 (1) | 2021.02.21 |
Tendorflow + keras history.history['acc'] 오류 해결 방법 (0) | 2021.02.21 |
Python opencv 이용하여 이미지 출력 하는 방법 (0) | 2021.02.21 |
댓글