def _apply_two_mask(self, image: np.ndarray, color: Color) -> np.ndarray:
     hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
     hsv_bounds = color.get_hsv_bounds()
     first_range = hsv_bounds[0][0]
     second_range = hsv_bounds[0][1]
     first_mask = cv2.inRange(hsv_image, np.array(first_range[0]),
                              np.array(first_range[1]))
     second_mask = cv2.inRange(hsv_image, np.array(second_range[0]),
                               np.array(second_range[1]))
     mask = first_mask + second_mask
     hsv_image[np.where(mask == 0)] = 0
     prepared_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR)
     return cv2.cvtColor(prepared_image, cv2.COLOR_BGR2GRAY)
 def _new_prepared_image(self, image: np.ndarray,
                         puck_color: Color) -> np.ndarray:
     hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
     hsv_bounds = puck_color.get_hsv_bounds()
     return cv2.inRange(hsv_image, np.array(hsv_bounds[0][0]),
                        np.array(hsv_bounds[0][1]))