이미지에서 특정 영역을 지정하고 그 영역의 좌표값을 추출하는 데 사용되는 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. 기본 세팅 윈도우창 이름](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
img 는 어떤 이미지를 사용할지 적용해주는 부분이고요.
아래와 같이 특정 영역을 선택해주면
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 roi 선정](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
x, y, w, h 값을 리턴 받게 됩니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 x, y, w, h 리턴값](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
x, y, w, h 값을 그림으로 도식화하면 아래와 같습니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 1. 기본 세팅 x, y, width, height 값](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
x, y는 사각형 좌상단 좌표, w, h는 사각형의 width, height를 의미합니다.
2. 추가 세팅
1) showCrossshair(default=True)
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 showCrosshair](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
showCrossshair 는 이미지를 select할때 십자가를 표시할지 말지 결정하는 인자입니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 showCorsshair=False](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
2) fromcenter(default=False)
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 fromcenter = True](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
기존 방식과 다르게 사각형을 지정할 때 첫 시작점이 우하단에서부터 시작 되는데요.
익숙한 방식은 아니기에 디폴트로 두고 사용하면 됩니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅 [파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 2. 추가 세팅](http://t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png)
3. x, y, w, h 값을 통해 이미지 crop 하기
원본 이미지를 인덱싱 관점으로 보면 아래와 같이 표현할 수 있습니다.
빨간색 사각형은 y축방향 파란색사각형은 x축방향을 의미합니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 원본이미지 크기](https://blog.kakaocdn.net/dna/b09cAN/btrTclJ9fpI/AAAAAAAAAAAAAAAAAAAAAH7J2qMrFozrE-2Q7CpvHNM9r6gMgRZYTxbVIR3bvIUC/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=MEaW4SOouHOpzvz%2BYpAooHVahLo%3D)
반면 아래와 같이 작성하면 전체이미지가 아닌 특정 부분을 커버한다는 의미입니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 crop이미지](https://blog.kakaocdn.net/dna/bCRF6S/btrTdHzfw8m/AAAAAAAAAAAAAAAAAAAAAH5HxuA602KAXGPQvdW_sOv4kuxFdAsCG0No5u61O98t/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=q4ZLW9NuKyfgvPK2utzUrE9Hrm8%3D)
이를 코드로 작성하고 크롭한 이미지를 출력해보겠습니다.
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 crop코드](https://blog.kakaocdn.net/dna/cXxqGl/btrTaOfs8XF/AAAAAAAAAAAAAAAAAAAAAO0lfLSQ3tQ2JaOG8YMbYFz1YRwO0jEZIOK05XqN-M3a/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=IfAwxGpp9UcRONjc7IYN7hUSg4Y%3D)
output:
![[파이썬 opencv] 오픈 cv에서 selectroi 사용하는 방법 - undefined - 3. x, y, w, h 값을 통해 이미지 crop 하기 cropped image](https://blog.kakaocdn.net/dna/53YdZ/btrTbkZg1ij/AAAAAAAAAAAAAAAAAAAAAKLBCKH4L1QZQnxk5pIMJFETSdTcJq0BGATXBnRZr5BO/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&expires=1756652399&allow_ip=&allow_referer=&signature=PtgOB3zLEcr9nnEgcSIxFdVP4TI%3D)
'머신러닝,딥러닝 > 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 |
댓글