Уменьшение задержки в Pi Camera - PullRequest
1 голос
/ 14 июля 2020

Я нашел код, который может сканировать штрих-код с помощью камеры Raspberry Pi V2.1.

Он работает должным образом и может обнаруживать штрих-код, когда я показываю его камере. Но если немного повернуть камеру, видео будет запаздывать. Пробовал увеличить камеру. частота кадров, но это ничего не дает. Разрешение тоже не меняет. Даже если я удалю функцию dec(), видео все равно будет выглядеть запаздывающим.

Как мне улучшить частоту кадров камеры, чтобы она не отставала?

Также код открывает окно, в котором я можно посмотреть видео. На данный момент это полезно для отладки, но мне было интересно, как я могу запретить Pi открывать видеоокно позже?

from ftplib import FTP
from pyzbar.pyzbar import decode
import os, sys, cv2
import numpy as np
from picamera.array import PiRGBArray
from picamera import PiCamera
import imutils, time

detectedBarcode = False

def dec(frame):
     global detectedBarcode
     x=decode(frame)
     for i in x:
        detectedBarcode = True 
        (x, y, w, h) = i.rect
 
        cv2.rectangle(frame,(x, y),(x + w, y + h),(0, 0, 255),2)
        barcodeData = i.data.decode("utf-8")
        barcodeType = i.type
        print(barcodeData, type(barcodeData))
        #sys.exit()
        return(barcodeData,barcodeType,1)
     return('','',0)

def cameraReader():
   fourcc = cv2.VideoWriter_fourcc(*'X264')

   camera=PiCamera()
   camera.resolution=(1296,730)
   camera.framerate = 30
   rawCapture=PiRGBArray(camera)
   cv2.namedWindow("QR Scanner",cv2.WINDOW_NORMAL)

   global detectedBarcode
   avg = None
   for frame in camera.capture_continuous(rawCapture,format="bgr",use_video_port=False):
        image=frame.array
        cv2.line(image, (650, 0), (650, 1000), (0, 255,0), 2)
        x,y,p=dec(image)
        cv2.imshow("QR Scanner",image)
        if cv2.waitKey(2) & 0xFF == ord('q'):
                    break
        rawCapture.truncate(0)

            #cap.release()
   cv2.destroyAllWindows()

cameraReader()
...