Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
 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))
Esempio n. 4
0
    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
Esempio n. 6
0
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)