안녕하세요, Davey입니다. 오늘 포스팅할 내용은 opencv로 이미지를 불러올 때 불러온 이미지를 회전해서 불러오는 방법에 대한 것입니다. 원점을 중심으로 이미지를 회전한다고 생각하시면 됩니다.
opencv 이용하여 이미지 회전
: 일단 회전하기를 원하는 이미지를 불러와야 합니다. 이미지를 불러오는 코드는 아래와 같습니다. 이전 포스팅에서 설명 드린 사항이니 자세히는 설명 드리지 않도록 하겠습니다. 이전 포스팅은 아래 Link를 확인하시면 참조 하실 수 있습니다.
#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)
- 이제 불러온 이미지 속성값을 이용하여 이미지를 회전 시키는 코드를 입력해보도록 하겠습니다. 사용할 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 이용하여 이미지를 회전해서 출력하는 방법을 다뤄봤습니다. 일단 기존에 만들어 놓은 라이브러리를 사용하니까 너무나도 편하긴 한데 내부 클래스의 이용 방법 및 속성값을 이해하지 못하면 구현하기가 좀 어려울 듯합니다. 이 부분은 반복적으로 연습하고 작업해야 해결이 될 거 같습니다. 그럼 여기에서 마무리 하도록 하겠습니다. 감사합니다.
제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.
[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.]
'파이썬 (Python) > 딥러닝 (Deep Learning)' 카테고리의 다른 글
Python opencv 이용하여 이미지 원하는 부분만 자르기 방법 (0) | 2021.02.23 |
---|---|
Python opencv 이용하여 이미지 확대 및 축소 하는 방법 (0) | 2021.02.22 |
Python opencv 이용하여 이미지 대칭 시켜서 출력 하는 방법 (2) | 2021.02.22 |
Python opencv 이용하여 이미지 크기 조절하는 방법 (2) | 2021.02.21 |
Python opencv 이용하여 카메라 출력 하는 방법 + 이미지 연속으로 출력 하는 방법 (1) | 2021.02.21 |
댓글