我正在使用循环来访问使用Python和OpenCV的视频文件的所有帧。在访问每个帧时,我在列表中添加了帧的索引。
但是我比较了列表的大小和使用
得到的帧数Frames = cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
命令和列表的大小总是比cap.get重新录制的视频帧数少一个元素... 任何想法为什么会发生这种情况?
以下是我使用的代码:
# -*- coding: utf-8 -*-
import cv2
def faceExtraction(inputFile, extractionRate):
cap = cv2.VideoCapture(inputFile)
fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)
Frames = cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)
print 'Frames='+str(Frames)
# if not os.path.exists("registered_face"):
# os.makedirs("registered_face")
frame_counter = 0
outputFrameIndices=[]
while(cap.isOpened()):
frame_counter=frame_counter+1
ret, frame = cap.read() # read current frame
outputFrameIndices.append(frame_counter)
if frame is None:
break
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# print 'FACE NOT FOUND: frame '+ str(frame_counter)
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
print 'number of frames: ' + str(len(outputFrameIndices))
############## Executing Main App ###########
faceExtraction('Video Filename blah blah',5)
我的代码产生的输出是: 帧= 930.0 帧数:929
应该如此 帧= 930.0 帧数:930答案 0 :(得分:1)
发现错误...... Python从零开始索引计数器......