이미지에서 특정 영역을 지정하고 그 영역의 좌표값을 추출하는 데 사용되는 selectroi 에 대해 알아보겠습니다.
1. 기본 세팅
img = cv2.imread('lenna.jpg', cv2.IMREAD_COLOR)
x, y, w, h = cv2.selectROI(windowName='roi', img=img)
여기서 windowName 인자는 윈도우 창 이름을 지정하는 부분입니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 윈도우창 이름](https://blog.kakaocdn.net/dn/AcFeR/btrTbj637gp/hLhOWEqlJIzTjEKtEMYus1/img.png)
img 는 어떤 이미지를 사용할지 적용해주는 부분이고요.
아래와 같이 특정 영역을 선택해주면
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 roi 선정](https://blog.kakaocdn.net/dn/OfzwT/btrTa6GMoU5/RcHhDELa2odPUYDU96sxLK/img.webp)
x, y, w, h 값을 리턴 받게 됩니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 x, y, w, h 리턴값](https://blog.kakaocdn.net/dn/X2e0F/btrTa7ZZTJP/EPooBR4KMqyCQJ1MX2U5fk/img.png)
x, y, w, h 값을 그림으로 도식화하면 아래와 같습니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 x, y, width, height 값](https://blog.kakaocdn.net/dn/o55Rz/btrTaC7pqb3/QO8wgBGIf9gkHb0bDpTBh1/img.png)
x, y는 사각형 좌상단 좌표, w, h는 사각형의 width, height를 의미합니다.
2. 추가 세팅
1) showCrossshair(default=True)
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 showCrosshair](https://blog.kakaocdn.net/dn/bfmQsk/btrS9QZaViR/u3j1nVUNhKz7t0dKDHweAK/img.png)
showCrossshair 는 이미지를 select할때 십자가를 표시할지 말지 결정하는 인자입니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 showCorsshair=False](https://blog.kakaocdn.net/dn/bjlATa/btrTeewYatm/iKUDoGgmuQikZ6Pk31z0m1/img.png)
2) fromcenter(default=False)
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 fromcenter = True](https://blog.kakaocdn.net/dn/bYiUvR/btrTaLCVwAw/8rMeDlEFv22XhaehMMqhRK/img.png)
기존 방식과 다르게 사각형을 지정할 때 첫 시작점이 우하단에서부터 시작 되는데요.
익숙한 방식은 아니기에 디폴트로 두고 사용하면 됩니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 [파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅](https://blog.kakaocdn.net/dn/qaseV/btrTbk5ZGIb/6nIzVq5M8RPdOKcSPald10/img.webp)
3. x, y, w, h 값을 통해 이미지 crop 하기
원본 이미지를 인덱싱 관점으로 보면 아래와 같이 표현할 수 있습니다.
빨간색 사각형은 y축방향 파란색사각형은 x축방향을 의미합니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 원본이미지 크기](https://blog.kakaocdn.net/dn/b09cAN/btrTclJ9fpI/Hu508g5ftxG9ovpQPN7f2K/img.png)
반면 아래와 같이 작성하면 전체이미지가 아닌 특정 부분을 커버한다는 의미입니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 crop이미지](https://blog.kakaocdn.net/dn/bCRF6S/btrTdHzfw8m/HcOv1kwOBO5i8CRYtK4K6k/img.png)
이를 코드로 작성하고 크롭한 이미지를 출력해보겠습니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 crop코드](https://blog.kakaocdn.net/dn/cXxqGl/btrTaOfs8XF/yKuQMJiPouGbRrlm7UWkQ1/img.png)
output:
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 cropped image](https://blog.kakaocdn.net/dn/53YdZ/btrTbkZg1ij/zAJk09EVmamgBkd5PyTBKK/img.png)
'머신러닝,딥러닝 > opencv' 카테고리의 다른 글
[opencv] jupyter notebook에서 영상 실행 방법(with ipywidgets) (0) | 2022.12.19 |
---|---|
[파이썬 opencv] 오픈cv 를 통해 비디오(영상) 출력하는 방법 (0) | 2022.12.02 |
[파이썬 opencv] 오픈 cv에서 yolov3 사용하는 방법 (2) | 2022.10.26 |
[파이썬 opencv] 오픈 cv에서 detection model 실행하는 방법 (0) | 2022.10.21 |
[오픈 cv] 트랙바란? 트랙바 사용방법(for opencv 초보자) (0) | 2022.09.14 |
댓글
꼬예님의
글이 좋았다면 응원을 보내주세요!
이 글이 도움이 됐다면, 응원 댓글을 써보세요. 블로거에게 지급되는 응원금은 새로운 창작의 큰 힘이 됩니다.
응원 댓글은 만 14세 이상 카카오계정 이용자라면 누구나 편하게 작성, 결제할 수 있습니다.
글 본문, 댓글 목록 등을 통해 응원한 팬과 응원 댓글, 응원금을 강조해 보여줍니다.
응원금은 앱에서는 인앱결제, 웹에서는 카카오페이 및 신용카드로 결제할 수 있습니다.