python - 使用OpenCV计数视频中的帧…(Python)

我正在使用循环来使用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

最佳答案

发现错误... Python从零开始启动索引计数器...

https://stackoverflow.com/questions/23919735/

相关文章:

opencv - OpenCV直方图反投影替代

opencv - 如何使用远距离的一个点(使用opencv)来计算相机方向?

android - 使用JNI获取arrayList的元素

opencv - 如何从opencv中的上下文获取设备列表

docker - Tensor Flow服务docker无效字段

android - 如何使用静态OpenCV在Android中使用JavaCV的静态方法

docker - 无法在 Dockerfile 中运行 sysctl 命令

macos - 带有OpenCV Mac的CMake(小牛)

python - 使用 slider 编辑颜色值

opencv - ANN-人工神经网络训练