def __connect_contours_by_distances(self, mask, distances, min_contour_area):
		contour_connector = ContourConnector(mask)

		for distance in distances:
			contour_connector.connect_contours_within_distance(distance)
			Helper.reduce_image_contours(contour_connector.connected_contours_mask, min_contour_area)

		return contour_connector.connected_contours_mask
	def __prepare_for_second_contour_connecting(self, mask):
		reduced_mask = Helper.reduce_image_contours(mask, 1)
		self.steps.append(("con_reduced", reduced_mask))
		# cv2.imshow("reduced", reduced_mask)
		dilated_mask = Helper.dilate_image(reduced_mask)
		# self.steps.append(("con_dilated", dilated_mask))
		# cv2.imshow("second dilated", dilated_mask)
		# Helper.show_images_and_wait([])
		return dilated_mask
    def __generate_general_color_lines_mask(self, low_range, high_range):
        color_range = self.__get_image_in_range_from_hsv(low_range, high_range)
        filled_contours = self.__get_filled_contours_from_image(color_range)
        contour_mask = Helper.convert_image_to_contour_mask(filled_contours)
        dilated = Helper.dilate_image(contour_mask, array=(2, 2))
        mask = Helper.reduce_image_contours(dilated,
                                            6,
                                            line_thickness=cv2.FILLED)

        return mask
    def __generate_green_mask(self):
        green_range = self.__get_image_in_range_from_hsv(
            MaskGenerator.low_green, MaskGenerator.high_green)
        filled_green_contours = self.__get_filled_contours_from_image(
            green_range)
        green_mask = Helper.convert_image_to_mask(filled_green_contours)
        green_mask_reduced = Helper.reduce_image_contours(
            green_mask, 200, line_thickness=cv2.FILLED)

        return green_mask_reduced
    def __generate_black_mask(self):
        black_range = self.__get_image_in_range_from_hsv(
            MaskGenerator.low_black, MaskGenerator.high_black)
        filled_contours = self.__get_filled_contours_from_image(black_range)
        contours_mask = Helper.convert_image_to_mask(filled_contours)
        dilated = Helper.dilate_image(contours_mask, array=self.dilate_array)
        black_mask = Helper.reduce_image_contours(dilated,
                                                  6,
                                                  line_thickness=cv2.FILLED)

        return black_mask
    def __generate_blue_mask(self):
        blue_range = self.__get_image_in_range_from_hsv(
            MaskGenerator.low_blue, MaskGenerator.high_blue)
        self.image_masks.steps.append(("blue_range", blue_range))
        filled_blue_contours = self.__get_filled_contours_from_image(
            blue_range)
        self.image_masks.steps.append(("blue_filled", filled_blue_contours))
        blue_mask = Helper.convert_image_to_mask(filled_blue_contours)
        dilated = Helper.dilate_image(blue_mask, array=(2, 2))
        self.image_masks.steps.append(("blue_dilated", dilated))
        blue_mask = Helper.reduce_image_contours(dilated,
                                                 15,
                                                 line_thickness=cv2.FILLED)

        return blue_mask
    def __generate_red_mask(self):
        red_range = self.__get_image_in_range_from_hsv(MaskGenerator.low_red,
                                                       MaskGenerator.high_red)
        # cv2.imshow("red range", red_range)
        filled_contours = self.__get_filled_contours_from_image(red_range)
        # cv2.imshow("filled contours", filled_contours)
        contours_mask = Helper.convert_image_to_mask(filled_contours)
        # cv2.imshow("contours mask", contours_mask)
        dilated = Helper.dilate_image(contours_mask, array=self.dilate_array)
        # cv2.imshow("dilated", dilated)
        reduced = Helper.reduce_image_contours(dilated,
                                               6,
                                               line_thickness=cv2.FILLED)
        # cv2.imshow("red range", red_range)

        return reduced