工作与否:python类型错误:'NoneType'对象不可下标



我使用此代码来识别QR和EAN代码。它运行良好。

但几个小时后,它停止了错误。即使我不使用它。为什么会发生这种情况?错误如下。它说萨莫廷的天空=框架是错误的[80:1200330:1500]。我是Python的新手,所以我一无所知。

错误:

天空=帧[800:1200330:1500]

python类型错误:"NoneType"对象不可下标

import cv2
import numpy as np
from pyzbar.pyzbar import decode
from matplotlib import pyplot as plt
from gpiozero import Buzzer
from time import sleep
qr= "1"
ean="1"
def wyslijEmail(tresc):
port = 465  # For SSL
smtp_server = "smtp.gmail.com"
sender_email = "***"  # Enter your address
receiver_email = "***"  # Enter receiver address
password = "***"

context = ssl.create_default_context()
with smtplib.SMTP_SSL(smtp_server, port, context=context) as server:
server.login(sender_email, password)
server.sendmail(sender_email, receiver_email, tresc)

def decoder(image):
gray_img = cv2.cvtColor(image,0)
barcode = decode(gray_img)
global a
global qr
global ean
buzzer = Buzzer(14)
kodQR = "QR"
ean13 = "EAN"

for obj in barcode:
points = obj.polygon
(x,y,w,h) = obj.rect
pts = np.array(points, np.int32)
pts = pts.reshape((-1, 1, 2))
cv2.polylines(image, [pts], True, (0, 255, 0), 3)
barcodeData = obj.data.decode("utf-8")
barcodeType = obj.type

if kodQR in barcodeType:
print("qr")
if qr != str(barcodeData):
qr=str(barcodeData)
wyslijEmail(barcodeData)
print("wysylam @")
buzzer.on()
sleep(1)
buzzer.off()
sleep(1)
else :
print("nowy kod")
elif ean13 in barcodeType:
print("ean")
if ean != str(barcodeData):
ean=str(barcodeData)
wyslijEmail(barcodeData)
print("wysylam @")
buzzer.on()
sleep(1)
buzzer.off()
sleep(1)
else :
print("nowy kod")

string = "Data " + str(barcodeData) + " | Type " + str(barcodeType)

cv2.putText(frame, string, (x,y), cv2.FONT_HERSHEY_SIMPLEX,0.8,(255,0,0), 2)
print("Barcode: "+barcodeData +" | Type: "+barcodeType )
print(a)
a=a+1
cap = cv2.VideoCapture(0)
cap.set(3, 2592)
cap.set(4, 1944)
a=0

while True:
ret, frame = cap.read()
sky = frame[800:1200,330:1500]
decoder(sky)
cv2.imshow('Image', sky)
code = cv2.waitKey(10)
if code == ord('q'):
break```

也许frame还不可用,您可以通过评估来确保它可用

if frame is None:
continue

最新更新