用于捕获当前帧并杀死过去帧的Python代码。

时间:2018-06-07 18:09:32

标签: python opencv

我正在编写代码以从实时视频中提取文本。我编写代码,执行得很好。但问题是它占用了所有帧并且运行缓慢。意味着延迟10秒。是否有任何命令可以杀死过去的帧并使用当前帧进行处理。

import cv2
import numpy as np
import time
import math
from PIL import Image
from pytesseract import image_to_string

cap = cv2.VideoCapture(0)
while(True):
    cap.open
    ret, img = cap.read()

    img = cv2.cvtColor(img, cv2.COLOR_BGR2BGRA)
    kernel = np.ones((1, 1), np.uint8)
    img = cv2.dilate(img, kernel, iterations=1)
    img = cv2.erode(img, kernel, iterations=1)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    blur = cv2.GaussianBlur(img,(5,5),0)
    ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)

    cv2.imshow('frame', th3)
    text = image_to_string(th3)
    print text
    if cv2.waitKey(1) & 0xFF == ord('q'):
        out = cv2.imwrite('capture.jpg', frame)
        break
cap.release()
cv2.destroyAllWindows()

1 个答案:

答案 0 :(得分:0)

不完全是。 VideoCapture的工作原理是为您提供下一个要按顺序处理的帧。如果它很慢,则由您来处理它。

一种常见的解决方案是每隔i帧处理一次。

但您也可以使用以下方法更改每秒帧数: cap.set(cv2.CAP_PROP_FPS,10)