def set_params(self, params): self.params = params self.rc_background = self.params['rc_background'] self.angleBody_i = self.get_bodyangle_i() self.cosAngleBody_i = np.cos(self.angleBody_i) self.sinAngleBody_i = np.sin(self.angleBody_i) self.ptHinge_i = np.array([self.params['gui'][self.name]['hinge']['x'], self.params['gui'][self.name]['hinge']['y']]) self.ptHingeHead_i = np.array([self.params['gui']['head']['hinge']['x'], self.params['gui']['head']['hinge']['y']]) self.ptHingeAbdomen_i = np.array([self.params['gui']['abdomen']['hinge']['x'], self.params['gui']['abdomen']['hinge']['y']]) # Compute the body-outward-facing angle, which is the angle from the body center to the bodypart hinge. # pt1 = [params['head']['hinge']['x'], params['head']['hinge']['y']] # pt2 = [params['abdomen']['hinge']['x'], params['abdomen']['hinge']['y']] # pt3 = [params['gui']['left']['hinge']['x'], params['gui']['left']['hinge']['y']] # pt4 = [params['right']['hinge']['x'], params['right']['hinge']['y']] # ptBodyCenter_i = get_intersection(pt1,pt2,pt3,pt4) # self.angleBodypart_i = float(np.arctan2(self.ptHinge_i[1]-ptBodyCenter_i[1], self.ptHinge_i[0]-ptBodyCenter_i[0])) # Compute the body-outward-facing angle, which is the angle to the current point from the forward body axis. if (self.name in ['head','abdomen']): nameRelative = {'head':'abdomen', 'abdomen':'head', 'left':'right', 'right':'left'} self.angleBodypart_i = float(np.arctan2(self.params['gui'][self.name]['hinge']['y']-self.params['gui'][nameRelative[self.name]]['hinge']['y'], self.params['gui'][self.name]['hinge']['x']-self.params['gui'][nameRelative[self.name]]['hinge']['x'])) else: ptBodyaxis_i = imageprocessing.get_projection_onto_axis(self.ptHinge_i, (self.ptHingeAbdomen_i, self.ptHingeHead_i)) self.angleBodypart_i = float(np.arctan2(self.params['gui'][self.name]['hinge']['y']-ptBodyaxis_i[1], self.params['gui'][self.name]['hinge']['x']-ptBodyaxis_i[0])) self.angleBodypart_b = self.angleBodypart_i - self.angleBody_i cosAngleBodypart_i = np.cos(self.angleBodypart_i) sinAngleBodypart_i = np.sin(self.angleBodypart_i) self.R = np.array([[cosAngleBodypart_i, -sinAngleBodypart_i], [sinAngleBodypart_i, cosAngleBodypart_i]]) # Turn on/off the extra windows. self.windowBG.set_enable(self.params['gui']['windows'] and self.params['gui'][self.name]['track'] and self.params['gui'][self.name]['subtract_bg']) self.windowFG.set_enable(self.params['gui']['windows'] and self.params['gui'][self.name]['track']) self.angle_hi_i = self.transform_angle_i_from_b(self.params['gui'][self.name]['angle_hi']) self.angle_lo_i = self.transform_angle_i_from_b(self.params['gui'][self.name]['angle_lo']) # Refresh the handle points. self.update_handle_points()
def set_params(self, params): self.params = params self.rc_background = self.params['rc_background'] self.angleBody_i = self.get_bodyangle_i() self.cosAngleBody_i = np.cos(self.angleBody_i) self.sinAngleBody_i = np.sin(self.angleBody_i) self.ptHinge_i = np.array([ self.params['gui'][self.name]['hinge']['x'], self.params['gui'][self.name]['hinge']['y'] ]) self.ptHingeHead_i = np.array([ self.params['gui']['head']['hinge']['x'], self.params['gui']['head']['hinge']['y'] ]) self.ptHingeAbdomen_i = np.array([ self.params['gui']['abdomen']['hinge']['x'], self.params['gui']['abdomen']['hinge']['y'] ]) # Compute the body-outward-facing angle, which is the angle from the body center to the bodypart hinge. # pt1 = [params['head']['hinge']['x'], params['head']['hinge']['y']] # pt2 = [params['abdomen']['hinge']['x'], params['abdomen']['hinge']['y']] # pt3 = [params['gui']['left']['hinge']['x'], params['gui']['left']['hinge']['y']] # pt4 = [params['right']['hinge']['x'], params['right']['hinge']['y']] # ptBodyCenter_i = get_intersection(pt1,pt2,pt3,pt4) # self.angleBodypart_i = float(np.arctan2(self.ptHinge_i[1]-ptBodyCenter_i[1], self.ptHinge_i[0]-ptBodyCenter_i[0])) # Compute the body-outward-facing angle, which is the angle to the current point from the forward body axis. if (self.name in ['head', 'abdomen']): nameRelative = { 'head': 'abdomen', 'abdomen': 'head', 'left': 'right', 'right': 'left' } self.angleBodypart_i = float( np.arctan2( self.params['gui'][self.name]['hinge']['y'] - self.params['gui'][nameRelative[self.name]]['hinge']['y'], self.params['gui'][self.name]['hinge']['x'] - self.params['gui'][nameRelative[self.name]]['hinge']['x'])) else: ptBodyaxis_i = imageprocessing.get_projection_onto_axis( self.ptHinge_i, (self.ptHingeAbdomen_i, self.ptHingeHead_i)) self.angleBodypart_i = float( np.arctan2( self.params['gui'][self.name]['hinge']['y'] - ptBodyaxis_i[1], self.params['gui'][self.name]['hinge']['x'] - ptBodyaxis_i[0])) self.angleBodypart_b = self.angleBodypart_i - self.angleBody_i cosAngleBodypart_i = np.cos(self.angleBodypart_i) sinAngleBodypart_i = np.sin(self.angleBodypart_i) self.R = np.array([[cosAngleBodypart_i, -sinAngleBodypart_i], [sinAngleBodypart_i, cosAngleBodypart_i]]) # Turn on/off the extra windows. self.windowBG.set_enable( self.params['gui']['windows'] and self.params['gui'][self.name]['track'] and self.params['gui'][self.name]['subtract_bg']) self.windowFG.set_enable(self.params['gui']['windows'] and self.params['gui'][self.name]['track']) self.angle_hi_i = self.transform_angle_i_from_b( self.params['gui'][self.name]['angle_hi']) self.angle_lo_i = self.transform_angle_i_from_b( self.params['gui'][self.name]['angle_lo']) # Refresh the handle points. self.update_handle_points()