ich arbeite auf einem System: RPi4 mit Python3
ich stehe im Bereich Programmierung eher am Anfang und habe mir bis jetzt nur kleinere Projekte vorgenommen...
Bei meiner derzeitigen Aufgabe, die ich mir selbst vorgenommen habe geht es um eine Zählerauslesung eines Stromzählers. Hier habe ich mir mittels Elektronik und etwas Zeit etwas gebastelt, um von dem Zähler Bilder zu machen und diese dann mittels tesseract in text umzuwandeln...
Hierbei wird in frei bestimmbaren Abständen das Licht angeschaltet, und eine frei bestimmbare Anzahl von Bildern mit der WebCam geschossen...
Ich habe mich für 6 Durchläufe (ergibt 6 x Bilder holen) entschieden. nun wird das Bild bei der Auflösung mit ca. 14,4 MB auf der Speicherkarte zwischengespeichert um es hinterher wieder zu öffnen.
Zum Einen finde ich es als den größten Zeitfresser im Ablauf des Programms, als Zweiten als nicht gerade speicherkartenschonend bei 6 Bilder x 60 je Std. x 24 Std/Tag = 8640 Bilder am Tag und als Drittes eigentlich überflüssig. Ich suche eine Variante das Bild von SS direkt an P0 zu übergeben ohne es zwischenzuspeichern. Da das Bild anschliesend weiterbearbeitet wird (siehe unten) bekomme ich logischer weise den Fehler:
Code: Alles auswählen
AttributeError: 'pygame.Surface' object has no attribute 'crop'
Gibt es da nicht eine Lösung ohne
Code: Alles auswählen
pygame.image.save(SS,'/home/pi/Dokumente/PyPro/B.BMP')
Code: Alles auswählen
def MakePic(Turns):
PL=[]
PV=0
aktTime = time.localtime()
aktDate = time.strftime("%d.%m.%Y, %H:%M:%S", aktTime)
aktSekJahr = (((((((aktTime[7] - 1) * 24) * 60) + aktTime[3]) * 60) + aktTime[4]) * 60) + aktTime[5]
for i in range(Turns):
SS = C.get_image()
pygame.image.save(SS,'/home/pi/Dokumente/PyPro/B.BMP')
P0 = Image.open('/home/pi/Dokumente/PyPro/B.BMP')
P0 = C.get_image()
PV= i % 2
for D1 in range(PCAD):
SN = '/home/pi/Dokumente/PyPro/P'+str("{0:03d}".format((D1*100)+i))+'.bmp'
P = P0.crop((PCA[D1][0][0]+PV, \
PCA[D1][0][1]+PV, \
PCA[D1][1][0]+PV, \
PCA[D1][1][1]+PV))
P = P.point(lambda x: 255-x)
P = P.point(lambda i: 0 if i < PCA[D1][2][0] else 255)
P = P.convert('1')
Pix = P.load()
PL.append(Pix)
P.save(SN, 'BMP')
return PL, aktTime, aktDate, aktSekJahr
Speedy77