在opencv python中每秒处理一次帧

时间:2018-01-30 16:16:46

标签: python python-3.x python-2.7 opencv

以下是使用opencv网站从网络摄像头读取视频文件的代码。我只想每秒处理一次帧。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

我应该如何修改代码:

1 个答案:

答案 0 :(得分:1)

你应该在每次阅读之前让你的过程等待一秒钟:

import numpy as np
import cv2
import time

cap = cv2.VideoCapture(0)

while(True):
    # Capture frame-by-frame
    start_time = time.time()
    ret, frame = cap.read()

    # Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    # Display the resulting frame
    cv2.imshow('frame',gray)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

    time.sleep(1.0 - time.time() + start) # Sleep for 1 second minus elapsed time

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()