In diesem Artikel wird davon ausgegangen, dass Sie ev3dev auf Ihrem EV3 installiert haben und über eine SSH-Verbindung verfügen. Wenn Sie die Umgebung nicht erstellt haben, lesen Sie bitte diesen Artikel.
mindstorm-Lass uns EV3 unter Linux steuern! Ev3dev OS und SSH-Verbindung installieren
mindstorm-Erstellen Sie ein Programm, das den Bildschirm (LCD) des intelligenten Blocks des EV3 erfasst und als Bild speichert. Verwenden Sie die ev3dev-API von Python ev3dev-lang-python.
Informationen zur Umgebungskonstruktion von ev3dev-lang-python finden Sie hier.
Lassen Sie uns EV3-Motoren und -Sensoren mit Python steuern
screenshot.py
#!/usr/bin/env python3
import sys
from subprocess import call
#Bibliothek zum Umgang mit Bilddaten
from PIL import Image
#Standardmäßig zu speichernder Bildname"screenshot.png "
out_name = sys.argv[1] if len(sys.argv) > 1 else "screenshot.png "
#Erfassen Sie den Bildpuffer und konvertieren Sie ihn in ein PNG-Bild
call(["fbgrab", out_name]);
#Laden Sie das Screenshot-Bild
image = Image.open(out_name)
#Bild in RGB-Format konvertieren
image = image.convert("RGB")
#Bild formatieren
image = image.resize(tuple(i * 2 for i in image.size), Image.NEAREST)
pixel_data = image.load()
#Bildfarbkonvertierung
for y in range(image.size[1]):
for x in range(image.size[0]):
if pixel_data[x, y] == (255, 255, 255):
pixel_data[x, y] = (173, 181, 120)
# Save the image again
image.save(out_name);
call(["fbgrab", out_name])
Das von erhaltene Screenshot-Bild ist ein Schwarzweißbild. Sie müssen daher die weißen Pixel in hellgrün konvertieren, um die wahre Bildschirmfarbe darzustellen.
Der folgende Teil des Programms realisiert diesen Prozess.
for y in range(image.size[1]):
for x in range(image.size[0]):
if pixel_data[x, y] == (255, 255, 255):
pixel_data[x, y] = (173, 181, 120)
Sie können die Speicherbilddatei im ersten Argument angeben.
robot@ev3dev:$ python screenshot.py test.png
Ich habe so ein Bild
Recommended Posts