построить систему отслеживания и прослеживания, используя python и камеру для извлечения текста из ярлыка - PullRequest
0 голосов
/ 10 февраля 2020

моя проблема в том, что камера слишком медленная и не плавная, и из-за этого мне трудно извлекать текст из метки в реальном времени. Я хочу знать, как сделать предварительный просмотр камеры более плавным, как видеокамера, есть большая задержка между прямой трансляцией и трансляцией? вот мой код

index = 0
#while test_vid.isOpened():
#make_480p()
while True:
    frames += 1
    test_vid = cv2.VideoCapture(0)
    test_vid.set(cv2.CAP_PROP_FRAME_WIDTH, 720)
    test_vid.set(cv2.CAP_PROP_FRAME_HEIGHT, 640)
    test_vid.set(cv2.CAP_PROP_FPS,1)
    fps = test_vid.get(cv2.CAP_PROP_FPS)
    print ("Frames per second using video.get(cv2.cv.CV_CAP_PROP_FPS): {0}".format(fps))
    ret,frame = test_vid.read()
    start = time.time()
    ret, frame = test_vid.read()
    rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    end = time.time()
    print ("time to read a frame : {} seconds".format(end-start))
    print(frame)
    frame = cv2.flip(frame, 10, 0)
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    cv2.imshow("LIVE", gray)
    key = cv2.waitKey(1)
    if key == ord('q'):
        break
    name = './image_frames/frame' + str(index) + '.png'
    print ('Extracting frames...' + name)
    cv2.imshow('frame',frame)
    cv2.imwrite(name, frame)

test_vid.release()
cv2.destroyAllWindows()  
demo = Image.open("./image_frames/frame0.png")
text = pytesseract.image_to_string(demo, lang = 'eng')
print(text) 

1 Ответ

1 голос
/ 10 февраля 2020

Одна проблема заключается в том, что вы воссоздаете объект VideoCapture каждый кадр. Переместите этот код настройки за пределы l oop, и вы увидите ускорение.

# setup the video capture device
test_vid = cv2.VideoCapture(0)
test_vid.set(cv2.CAP_PROP_FRAME_WIDTH, 720)
test_vid.set(cv2.CAP_PROP_FRAME_HEIGHT, 640)
test_vid.set(cv2.CAP_PROP_FPS,1)
fps = test_vid.get(cv2.CAP_PROP_FPS)
print ("Frames per second using video.get(cv2.cv.CV_CAP_PROP_FPS): {0}".format(fps))

while test_vid.isOpened():
    ret,frame = test_vid.read()
    # do frame processing...

    # calculate wait time based on the camera fps
    # (as an extension, measure and subtract the image processing time)
    key = cv2.waitKey(int(1000/fps))
    if key == ord('q'):
        break
...