2

我找到了一个可以使用 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()
4

0 回答 0