Beispiel #1
0
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))