오늘은 비디오를 크기를 조절하는 방법에 대해서 공부했다
Setting Camera Parameters in OpenCV Python
이때까지 배운 메소드들을 이용해서 다음과 같은 코드를 작성하면
import cv2
cap=cv2.VideoCapture(0)
print(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
while (cap.isOpened()):
ret, frame = cap.read()
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.imshow('frame', gray)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
cap.release()
cap.destryAllWindows()
위와 같은 흑백 비디오가 출력이 된다. 오늘도 물티슈로 급하게 가려보는 ㅋㅋㅋㅋ
그리고 frame 의 width는 640 height는 480 이다.
이때 우리가 출력되는 비디오의 크기를 조정하고 싶다고 하면
VideoCapture 메소드로 만들어지 cap 변수를 이용해서 다양한 방법을 이용할 수 있다.
위에서 본 코드처럼 cap.get 메소드를 이용해서 비디오의 WIDTH , HEIGHT 를 가져올 수 있고
두번쨰로는 cap.set 메소드를 이용한다는 것이다.
cap.set(property, 지정크기)
cap.set 메소드의 첫번째 인자로는 property 가 들어가고
cap.set 메소드의 두번째 인자로는 지정크기가 들어간다.
이때 property 는 cv2.CAP_PROP_FRAME_WIDTH 혹은 cv2.CAP_PROP_FRAME_HEIGHT 가 들어가는데
이것을 전부 다 적기보다는 각각 WIDTH, HEIGHT 가 지정되어 있는 숫자를 대신 넣는 방법이 있음
WIDTH : 3 에 해당하고 HEIGHT : 4에 해당한다.
그래서 cap.set 메소드를 이용하게 된다면
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1208)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
cap.set(3, 1208)
cap.set(4, 720)
위의 두개와 아래 두개는 같은 결과를 나타내게 된다.
코드를 실행하면 이전보다 훨씬 frame 의 크기가 커진 것을 볼 수 있고 python 실행 결과 창에도
우리가 조정한 width 와 height 값이 출력되게 된다.
이제 크기를 각각 700 700 으로 조정해보자
크기는 변화되지 않았고 640, 480 값이 그대로 출력되었다.
그 이유는 랜덤한 값을 넣더라도, 카메라가 설정가능한 해상도를 입력해야지 실행이 되기 때문이다.
이번에는 아주 큰 값 3000,3000 을 입력해보면
여전히 width 1280, height 720 이 출력되는 것을 볼 수 있다.
그 이유는 1280, 720 이 현재 내 노트북에 부착되어있는 카메라가 출력할 수 있는 최대 해상도이기 때문이다.
참고) 유튜브 opencv python tutorial for beginners 6 - setting camera parameters in opencv python