한 번에 한 프레임을 처리하려고하는 비디오 파일이 있습니다. VideoCapture 클래스를 사용하여 다음 유형의 코드로 읽기 작업을 시도했습니다. 문제는 비디오 파일을 초당 25 프레임으로 녹화하면 독서가 같은 속도로 진행된다는 것입니다. 컴퓨터에서 최대한 빨리 프레임을 가져 오는 방법은 무엇입니까?파일 프레임 속도보다 빠른 Python OpenCV로 비디오 파일을 처리하는 방법은 무엇입니까?
비디오 스트림을 처리 한 다음 파일에 저장할 계획입니다.
import cv2
import sys
import time
cap = cv2.VideoCapture(sys.argv[1])
start = time.time()
counter = 0
while True:
counter += 1;
image = cap.read()[1]
if counter %25 == 0:
print "time", time.time() - start
출력 : 25 프레임마다 한 번 타임 스탬프를 인쇄합니다. 타임 라인이 매 라인 => 프로그램에서 초당 약 25 프레임을 처리 할 때 거의 정확하게 1 초씩 변하는 것을 볼 수 있습니다. 이 비디오 파일은 25 프레임/초입니다.
time 1.25219297409
time 2.25236606598
time 3.25211691856
time 4.25237703323
time 5.25236296654
time 6.25234603882
time 7.252161026
time 8.25258207321
time 9.25195503235
time 10.2523479462
아마도 VideoCapture는 이러한 종류의 작업에 잘못된 API이지만 아마도 대신 무엇을 사용해야합니까?
Linux, Fedora 20, opencv-python 2.4.7 및 python 2.7.5를 사용합니다.
"문제는 비디오 파일을 초당 25 프레임으로 녹화하면 독서가 같은 속도로 진행된다는 것입니다. 그것은 원래의 프레임 속도를 고려하지 않습니다. 위의 코드는 이미 최대한 빨리 읽습니다. – berak
"아마 VideoCapture가 이런 종류의 작업을하는 잘못된 API입니다."- 네, 아마도 그럴 것입니다. 그것은 단지 이미지를 획득하는 유틸리티 일 뿐이며 더 이상은 아닙니다. – berak
@berak 읽기 속도는 30fps 비디오의 경우 30fps, 15fps 비디오의 경우 15fps, CPU 유휴 상태가 많은 것 같습니다. –