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