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

Python opencv 이용하여 이미지 회전해서 출력하는 방법

by ★√★ 2021. 2. 22.

안녕하세요, Davey입니다. 오늘 포스팅할 내용은 opencv로 이미지를 불러올 때 불러온 이미지를 회전해서 불러오는 방법에 대한 것입니다. 원점을 중심으로 이미지를 회전한다고 생각하시면 됩니다.

 

Python opencv 이용하여 이미지 회전해서 출력하는 방법 썸네일

 

opencv 이용하여 이미지 회전

: 일단 회전하기를 원하는 이미지를 불러와야 합니다. 이미지를 불러오는 코드는 아래와 같습니다. 이전 포스팅에서 설명 드린 사항이니 자세히는 설명 드리지 않도록 하겠습니다. 이전 포스팅은 아래 Link를 확인하시면 참조 하실 수 있습니다.

 

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

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

davey.tistory.com

#opencv를 선언
import cv2

#원하는 이미지를 불러오는 코드를 입력
test_img_read = cv2.imread("001.png", cv2.IMREAD_COLOR)

 

- 읽어 온 이미지의 속성값을 가져오기 위해 아래와 같이 코드를 구현을 합니다. 가져오고 싶은 속성 값은 height, width, channel 입니다. 사실 "channel" 값을 왜 가져오는지는 모르겠습니다. 참조 하시라고 print 로 해서 출력한 값도 같이 첨부 해드리도록 하겠습니다.  결과값만 말씀드리면 "3" 입니다. 이 부분은 저도 개인적으로 공부를 더 해야지 말씀 드릴 수 있을 거 같습니다.

 

height, width, channel = test_img_read.shape
print(channel)

channel 출력 값

 

- 이제 불러온 이미지 속성값을 이용하여 이미지를 회전 시키는 코드를 입력해보도록 하겠습니다. 사용할 class는 cv2.getRotationMatrix2D 와 cv2.warpAffine 입니다.

 

1) cv2.getRotationMatrix2D(돌릴 중심축, 각도, 크기 비율)

2) cv2.warpAffine(원본 이미지, cv2.getRotationMatrix2D로 변환한 아핀 맵 행렬, 출력 이미지 크기)

(아핀 맵 행렬은 회전 행렬 생성 함수에서 반환된 매핑 변환 행렬을 사용하게 됨)

 

- 즉, 가로, 세로의 중간 값이 만나는 점을 회전축으로 잡고 90도로 회전을 해주는 것입니다. 비율은 1로 했으니까 원본 사이즈 그대로 나오는 것이라고 생각하시면 됩니다.

 

#원점기준 회전이기에 원점을 설정해주고, 회전할 각도를 설정, 마지막으로 비율
test_ro1 = cv2.getRotationMatrix2D((width/2, height/2), 90, 1)

#불러온 이미지에 새롭게 세팅한 회전 값을 입력
test_tr1 = cv2.warpAffine(test_img_read, test_ro1, (width, height))

 

 

opencv를 이용하여 회전한 이미지 출력

 

: 위의 코드를 이용하여 회전된 이미지를 출력해보도록 하겠습니다. 비교를 위해 원본 이미지까지 같이 출력하는 코드를 사용하도록 하겠습니다. 출력되는 이미지 크기도 같이 보기 좋게 조정해보도록 하겠습니다.

 

#원본 이미지 크기를 조정
test_resize1 = cv2.resize(test_img_read, dsize=(500, 500), interpolation=cv2.INTER_AREA)

#회전된 이미지 크기를 조정
test_resize2 = cv2.resize(test_tr1, dsize=(500, 500), interpolation=cv2.INTER_AREA)

#원본 이미지 출력
cv2.imshow("Origianl Photo", test_resize1)

#회전된 이미지 출력
cv2.imshow("Rotated Photo", test_resize2)

cv2.waitKey()
cv2.destroyAllWindows()

 

- 위 코드를 구현해서 실행을 해보면 아래와 같은 결과를 보실 수 있습니다. 

 

Python opencv 이용하여 이미지 회전해서 출력 코드 결과 값

 

 

맺음말

:  이번 포스팅에서는 Python opencv 이용하여 이미지를 회전해서 출력하는 방법을 다뤄봤습니다. 일단 기존에 만들어 놓은 라이브러리를 사용하니까 너무나도 편하긴 한데 내부 클래스의 이용 방법 및 속성값을 이해하지 못하면 구현하기가 좀 어려울 듯합니다. 이 부분은 반복적으로 연습하고 작업해야 해결이 될 거 같습니다. 그럼 여기에서 마무리 하도록 하겠습니다. 감사합니다.

 

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


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

728x90

댓글


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