task 1:

frameHSV = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

orange:

lower_bound = np.array([0, 120, 120])
    upper_bound = np.array([25, 255, 255])
    mask = cv2.inRange(frameHSV, lower_bound, upper_bound)

task 2:

kernel = np.ones((5, 5), np.uint8)
    mask = cv2.dilate(mask, kernel, iterations=1)
    mask = cv2.erode(mask, kernel, iterations=1)

task 3:

contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    # Get the largest contour
    largest_contour = max(contours, key=cv2.contourArea)
    mask = cv2.drawContours(frame, largest_contour, -1, (0, 255, 0), 3)
    cv2.imshow('Coin Detector', mask)
    M = cv2.moments(largest_contour)
    centroid_x = int(M["m10"] / M["m00"]) - frame.shape[1] // 2
    centroid_y = int(M["m01"] / M["m00"]) - frame.shape[0] // 2

    contour_area = cv2.contourArea(largest_contour)
totaldistance = contour_area/ np.square(contour_area)

    degreesperpixel = 0.2
    angle_x = centroid_x * degreesperpixel
    angle_y = centroid_y * degreesperpixel
    sumangle = np.sqrt(angle_x ** 2 + angle_y ** 2)
    radian_angle = np.radians(sumangle)
    z = np.cos(radian_angle) * totaldistance

task 4:

print(angle_x)
    print(angle_y)
    print(z)

image.png

image.png

image.png