본문 바로가기

Python

[Python] opencv로 카메라에서 이미지 프레임을 가져올 때 주의할 점

728x90

간혹 opencv로 카메라 스트림에서 1 프레임씩 이미지를 가져오려는 경우가 있을 수 있다.

 

하지만 실시간으로 비디오를 스트리밍하는 게 아니라 원할 때 1 프레임씩 가져올 때 요청 순간의 프레임이 아닌 이전 시점의 프레임을 가져온다.

 

이는 opencv에서 카메라를 열 때 이전 프레임을 얼마나 담아둘지 버퍼 사이즈를 지정하기 때문인데 이를 조절하도록 해야 한다.

 

버퍼의 크기는 아래와 같이 조절할 수 있다.

cap = cv2.VideoCapture(0)
cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)

 

그리고 이 상황에서 요청 순간의 프레임을 받아오려면 read()로 버퍼를 비운 뒤에 다시 read()를 호출해 주면 된다.

cap.read() # 버퍼 비우기
ret, frame = cap.read()

 

728x90