Jun-27-2022, 07:33 PM
Hi everyone,
I use a Raspberry PI4 for running a python script, which is using the RPI camera for detecting coordinates of body joints.
Basically the skript gives back the real time coordinates of detected joints.
If I run the Server skript and printing the joint coordinates to the RPI console via the tool putty, everything is working fine.
Now I need to transfer the joint coordinates data to a client for further processing. First, I like to print the coordinates to the clients´console for checking, if everything is working well. These client is connected to my local network (=basically my laptop). The connection is settet up correctly but I didn´t find a way to consistently print these data to the client´s console.
Clients´ Code:
I really looking forward to your input!
best regards,
Gustav
I use a Raspberry PI4 for running a python script, which is using the RPI camera for detecting coordinates of body joints.
Basically the skript gives back the real time coordinates of detected joints.
If I run the Server skript and printing the joint coordinates to the RPI console via the tool putty, everything is working fine.
Now I need to transfer the joint coordinates data to a client for further processing. First, I like to print the coordinates to the clients´console for checking, if everything is working well. These client is connected to my local network (=basically my laptop). The connection is settet up correctly but I didn´t find a way to consistently print these data to the client´s console.
Clients´ Code:
import socket HOST = '192.168.0.11' # server IP address PORT = 17854 # server port with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.connect((HOST, PORT)) print("connected to:", HOST) #while True: # if activated, this code snippet just prints empty data to the console instead of body joint coordinates data = sock.recv(1024) #print landmarks to console print(data.decode())Server / RPI Code:
import mediapipe as mp import cv2 import socket HOST = '192.168.0.11' # localhost PORT = 17854 # IMPORTANT !! Do not use reserved ports mp_drawing = mp.solutions.drawing_utils mp_holistic = mp.solutions.holistic mp_pose = mp.solutions.pose cap = cv2.VideoCapture(0) #start socket print("waiting for client...") with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock: sock.bind((HOST, PORT)) sock.listen() conn, addr = sock.accept() with conn: print('Client connected by', addr) # Start image processing to generate landmarks from video with mp_holistic.Holistic(min_detection_confidence=0.5, min_tracking_confidence=0.5) as holistic: while cap.isOpened(): ret, frame = cap.read() # Recolor Feed image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) # Make Detections results = holistic.process(image) # Recolor image back to BGR for rendering image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR) # draw connections between landmarks mp_drawing.draw_landmarks(image, results.pose_landmarks, mp_holistic.POSE_CONNECTIONS) # make landmarks visible on screen. deactivate, if no screen available # cv2.imshow('Raw Webcam Feed', image) # Extract landmarks (coordinates of human joints) try: landmarks = results.pose_landmarks.landmark # print(landmarks) #print body joint coodinates to RPi conseole - working with conn: data = landmarks.encode('utf-8') print(data) #if encoding deactivated, landmarks are shown correctly. If encoding activated, no data is visible. #send data to socket conn.sendall(data) except: pass if cv2.waitKey(10) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()How would you go on with this issue?
I really looking forward to your input!
best regards,
Gustav