def loop(): frame = capture.get_frame() if frame is None: return (cap_height, cap_width, cap_channels) = frame.shape # print(width, height, channels) global markerDict (corners, ids, rejects) = aruco.detectMarkers(frame, markerDict) # print(corners) frame = aruco.drawDetectedMarkers(frame, corners, ids) detected_markers = np.array([]).reshape(0, 3) for i in range(len(corners)): corner = corners[i][0] p1 = corner[0] p2 = corner[1] p3 = corner[2] p4 = corner[3] x = p1[0] - ((p1[0] - p3[0]) / 2) y = p1[1] - ((p1[1] - p3[1]) / 2) x = int(x) y = int(y) # print(x, y, cap_width, cap_height) detected_markers = np.vstack( (detected_markers, np.array([ids[i][0], x / cap_width, y / cap_height]))) cv2.circle(frame, (x, y), 10, (255, 255, 255), 2) global sock if not sock.is_available(): sock.connect() else: send_data = Markers() for row in detected_markers: marker = Marker(int(row[0]), row[1], row[2]) send_data.append(marker) sock.send(str(send_data))