def split_label5_contours(self): "splits contours, not used anymore " for contour_instance in self.contour_instances: if contour_instance.label == '4' or contour_instance.label == '5': contour_instance_new = contour.Contour() contour_instance_new.contour_id = 'clone' contour_instance_new.rectangle_height = contour_instance.rectangle_height contour_instance_new.rectangle_width = contour_instance.rectangle_width contour_instance_new.centroid_x = contour_instance.centroid_x contour_instance_new.centroid_y = contour_instance.centroid_y contour_instance_new.contour = contour_instance.contour if contour_instance_new.rectangle_width > contour_instance_new.rectangle_height: contour_instance_new.centroid_x = int(contour_instance_new.centroid_x \ + contour_instance_new.rectangle_width*0.25) contour_instance.centroid_x = int(contour_instance.centroid_x \ - contour_instance.rectangle_width*0.25) elif contour_instance_new.rectangle_width < contour_instance_new.rectangle_height: contour_instance_new.centroid_y = int(contour_instance_new.centroid_y \ + contour_instance_new.rectangle_height*0.25) contour_instance.centroid_y = int(contour_instance.centroid_y \ + contour_instance.rectangle_height*0.25) self.contour_instances.append(contour_instance_new) self.contour_instance_count = len(self.contour_instances) self.logger.debug("contour_instance_count after splitting label 5 contours: %s"\ ,self.contour_instance_count) return self.contour_instances
def initiate_filter_calculate_contour_instances(self,crop_window_up, crop_window_down\ , trained_model): "performs all needed preparations of contours. Do not use in main_generate_training_data" # initiate_contour_instances(self): contour_index = 0 contour_instances_temp = [] for contour_instance in range(self.contour_count): contour_instance = contour.Contour() contour_instance.contour_id = self.frame_id + '-' + str( contour_index).rjust(10, '0') contour_instance.contour = self.contours[contour_index] contour_index += 1 # filter_contour_instances contour_instance.area = cv2.contourArea(contour_instance.contour) moment = cv2.moments(contour_instance.contour) try: contour_instance.centroid_x = int(moment['m10'] / moment['m00']) contour_instance.centroid_y = int(moment['m01'] / moment['m00']) except ZeroDivisionError: continue if contour_instance.centroid_y > crop_window_up \ and contour_instance.centroid_y < crop_window_down : self.logger.debug("contour_instance with id %s has area %s and is appended to "\ "filtered list" ,contour_instance.contour_id, contour_instance.area) #calculate properties contour_instance.calculate_properties() contour_instance.calculate_area_white_gray( self.frame_backgroundsubsstractor) #predict observation = [contour_instance.get_observation()] observation = pd.DataFrame(observation) observation = observation[['area'\ ,'area_white'\ ,'area_grey'\ ,'centroid_x'\ ,'centroid_y'\ ,'contour_arc_length'\ ,'hull_area'\ ,'poly_area'\ ,'rectangle_width'\ ,'rectangle_height'\ ,'angle' ]] contour_instance.label = trained_model.predict(observation)[0] self.logger.debug('predicted contour label of contour_id %s with label %s'\ , contour_instance.contour_id, contour_instance.label) if contour_instance.label == '1' or contour_instance.label == '2' \ or contour_instance.label == '4' or contour_instance.label == '5': self.logger.debug("contour_instance with contour_id %s has label 1, 2 or 5 "\ "and is appended to filtered list", contour_instance.contour_id) contour_instances_temp.append(contour_instance) self.contour_instances = contour_instances_temp return self.contour_instances
def set_sweep_angle(self, angle): if self.span < 0.01: print "Must set wing.span value before sweep angle" return tip_offset = self.span * math.tan(math.radians(angle)) self.sweep = contour.Contour() self.sweep.top.append((0.0, 0.0)) self.sweep.top.append((self.span, tip_offset))
def initiate_contour_instances(self): "only used in main_generate_training_data processing of the contour" contour_index = 0 for contour_instance in range(self.contour_count): contour_instance = contour.Contour() contour_instance.contour_id = self.frame_id + '-' + str( contour_index).rjust(10, '0') contour_instance.contour = self.contours[contour_index] self.contour_instances.append(contour_instance) contour_index += 1 self.contour_instance_count = len(self.contour_instances) self.logger.debug("contour_instance_count after initating: %s", self.contour_instance_count)
def iceDiagnosticPlotFactory(plot_type,env): """Create and return an object of the requested type. """ plot_set = {} if plot_type == "PLOT_CONT": for seas in ('jfm', 'amj', 'jas', 'ond', 'ann'): plot_set['contour_'+seas] = contour.Contour(seas,env) plot_set['iceSat_iceThickness'] = iceSat.IceSat_iceThickness(env) elif plot_type == "PLOT_CONT_DIFF": for seas in ('jfm', 'amj', 'jas', 'ond', 'ann'): plot_set['contour_diff'+seas] = contourDiff.ContourDiff(seas,env) plot_set['IceSat_iceThicknessDiff'] = iceSatDiff.IceSat_iceThicknessDiff(env) elif plot_type == "PLOT_VECT": plot_set['vector'] = vector.Vector(env) elif plot_type == "PLOT_VECT_DIFF": plot_set['vector_diff'] = vectorDiff.VectorDiff(env) elif plot_type == "PLOT_LINE": plot_set['web_hem_avg'] = web_hem_avg.Web_Hem_Avg(env) plot_set['web_hem_clim'] = web_hem_clim.Web_Hem_Clim(env) elif plot_type == "PLOT_LINE_DIFF": plot_set['web_hem_avgDiff'] = web_hem_avgDiff.Web_Hem_AvgDiff(env) plot_set['web_hem_climDiff'] = web_hem_climDiff.Web_Hem_ClimDiff(env) elif plot_type == "PLOT_REGIONS": for reg_num in range(0,16): plot_set['web_reg_avg_'+str(reg_num)] = web_reg_avg.Web_Reg_Avg(reg_num, env) plot_set['web_reg_clim'] = web_reg_clim.Web_Reg_Clim(env) elif plot_type == "PLOT_REGIONS_DIFF": for reg_num in range(0,16): plot_set['web_reg_avgDiff_'+str(reg_num)] = web_reg_avgDiff.Web_Reg_AvgDiff(reg_num, env) plot_set['web_reg_climDiff'] = web_reg_climDiff.Web_Reg_ClimDiff(env) else: raise UnknownPlotType("WARNING: Unknown plot type requested: '{0}'".format(plot_type)) return plot_set
import contour print(dir(contour)) #print(contour.cos_func(1.0)) cont1 = contour.Contour() cont2 = contour.Contour() pt = [1.0, 0.0, 0.0] cont1.add_control_point(pt)