본문 바로가기

카테고리 없음

opencv - 4일차

오늘은 비디오를 크기를 조절하는 방법에 대해서 공부했다

 

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