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