From 94e04a3427423b9e0190c2f509082bd3132f8d0a Mon Sep 17 00:00:00 2001 From: DJE98 Date: Sat, 30 Sep 2023 15:53:08 +0200 Subject: [PATCH] Added functions to send image and emotions via tcp socket --- hackathon/communication.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 hackathon/communication.py diff --git a/hackathon/communication.py b/hackathon/communication.py new file mode 100644 index 0000000..d01ee52 --- /dev/null +++ b/hackathon/communication.py @@ -0,0 +1,36 @@ +import socket +import cv2 as cv +import pickle +from pickle import UnpicklingError + + +def create_client_socket(): + client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + client_socket.setsockopt(socket.SOL_SOCKET, socket.SO_SNDBUF, 10000000) + return client_socket + + +def create_server_socket(ip, port): + server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + server_socket.bind((ip, port)) + return server_socket + + +def send_image_and_emotions(open_socket, address, photo, emotions): + ret, buffer = cv.imencode(".jpg", photo, [int(cv.IMWRITE_JPEG_QUALITY), 30]) + x_as_bytes = pickle.dumps((buffer, emotions)) + open_socket.sendall(x_as_bytes) + + + + +def receive_image_and_emotions(open_socket): + try: + x = open_socket.recvfrom(1000000) + data = x[0] + (data, emotions) = pickle.loads(data) + photo = cv.imdecode(data, cv.IMREAD_COLOR) + return (photo, emotions) + except UnpicklingError: + pass + return None