Gestenerkennung Client
Dieser Teil ist nur optional und noch in Entwicklung und ist nicht als Zielsetzung für das ursprüngliche Projekt anzusehen.
Achtung: Hier werden nur die neuen Teile, die für die Client-Server Verbindung (Auswertung durch Backend) verwendet werden, kommentiert. Die restlichen Funktionen sind in der lokalen Gestenerkennung ausführlich kommentiert.
Sie müssen wie auch für die lokale Gestenerkennung im Terminal mittels "pip install" die Bibliotheken Socket und Pickle installieren.
import cv2
import time
import serial
import socket
import pickle
serialcom = serial.Serial('/dev/ttyACM0', 115200)
kamera = cv2.VideoCapture(0)
letzte_zeit = time.time()
# Verbindung zum Server wird hergestellt
clientsocket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
clientsocket.connect(('server.tesy-robot.de',8089))
# Schleife, die durchläuft solange die Gestenerkennung läuft
while True:
success, frame = kamera.read() # Liest einen einzelnen Frame der Webcam aus
if not success:
break
# Schickt die Daten an den oben festgelegten Server, und teils diese vorher in kleine Stück auf
clientsocket.send(pickle.dumps(frame))
# Empfängt die Daten vom Server
received = clientsocket.accept().recv(4096)
data_arr = pickle.loads(received) # Speichert die empfangenen Daten (Rückgabewerte in Form von Zahlen) vom Server
# Schickt wenn eine Mindestzeit zum letzten senden vorliegt die verarbeiteten Daten an der Arduino zurück
aktuelle_zeit = time.time()
if aktuelle_zeit - letzte_zeit > 0.001:
serialcom.write(bytearray(data_arr))
letzte_zeit = aktuelle_zeit
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# Beendet die Verbindung zum Server und schließt die Verbindung zum Servern
clientsocket.close()
kamera.release()Last updated