示例#1
0
    def fill_buffer(self, frame_queue, buffer_size):
        '''
        this function is to fill the buffer with initial frames.

        '''
        prev_idx = self.detection_data[0][0]
        j = 0
        t = buffer_size
        frame = None
        while t > 0:

            coordinates = (self.detection_data[j][1],
                           self.detection_data[j][2],
                           self.detection_data[j][3],
                           self.detection_data[j][4])

            if (self.detection_data[j][0] != prev_idx):
                image_path = join(self.detection_imgs_path,
                                  str(prev_idx).zfill(8) + '.jpg')
                # image_path = join(self.detection_imgs_path, str(prev_idx).zfill(8))
                # print(image_path)
                img = cv2.imread(image_path)
                img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
                frame.set_img(img)
                frame_queue.append(frame)
                t -= 1

            if self.detection_data[j][0] != prev_idx or j == 0:
                frame = Frame(self.detection_data[j][0])
            frame.add_box(Box(coordinates, self.detection_data[j][5]))
            prev_idx = self.detection_data[j][0]
            j += 1

        self.last_added_frame_index = frame.frame_indx
        self.last_readed_row = j - 1
示例#2
0
def GetPose():
	f = Frame()
	pose = pointerBody.GetPositionCartesian()
	if pose.GetValid():  # if visible
		f.FromVctFrm3(pose.Position())
		f.IsValid = True
	#else return just the identity
	return f
示例#3
0
文件: GUI.py 项目: More4me/AI
    def __init__(self, parent, game):
        self.game = game
        Frame.__init__(self, parent)
        self.parent = parent

        self.row, self.col = -1, -1

        self.__initUI()
示例#4
0
def GetReference():
    f = Frame()
    pose = referenceBody.measured_cp()
    if pose.GetValid():  # if visible
        f.FromVctFrm3(pose.Position())
        f.IsValid = True
    #else return just the identity
    return f
示例#5
0
 def __init__(self, node, name):
     self.node = node.createChild(name)  # node
     self.collision = None  # the added collision mesh if any
     self.visual = None  # the added visual model if any
     self.dofs = None  # dofs
     self.mass = None  # mass
     self.frame = Frame.Frame()
     self.framecom = Frame.Frame()
     self.fixedConstraint = None  # to fix the RigidBody
示例#6
0
    def __init__(self, taxis_matrix=[]):
        self.index = 0

        if len(taxis_matrix) > 0:
            self.frames = [Frame(taxis_coods=taxis_matrix[0])]
        for i in range(1, len(taxis_matrix)):
            self.add_frame(
                Frame(previous_frame=self.frames[i - 1],
                      taxis_coods=taxis_matrix[i]))
示例#7
0
class Game:
    def __init__(self, size):
        pygame.init()
        self.size = size
        self.screen = pygame.display.set_mode(size, 0, 32)
        self.color = black
        pygame.display.set_caption('PACMAN FOREVER YOUNG')
        self.run = True
        self.frame = Frame((50, 50, 1100, 800), cyan, 4)
        self.pacman = Pacman(self.frame)
        # game speed = number of operations per sec
        self.game_speed = 60
        self.lines = []

    def escape_loop(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                self.run = False
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    self.run = False

    def main_loop(self):
        time = pygame.time.Clock()
        while self.run:
            # manage a speed of the game
            time.tick(self.game_speed)

            keys_pressed = pygame.key.get_pressed()
            if keys_pressed[pygame.K_DOWN]:
                self.pacman.set_direction(3)
            elif keys_pressed[pygame.K_UP]:
                self.pacman.set_direction(1)
            if keys_pressed[pygame.K_RIGHT]:
                self.pacman.set_direction(2)
            elif keys_pressed[pygame.K_LEFT]:
                self.pacman.set_direction(4)
            if keys_pressed[pygame.K_SPACE]:
                self.pacman.set_direction(0)

            self.escape_loop()

            # Fill the background
            self.screen.fill(self.color)
            # draw Frame
            pygame.draw.rect(self.screen, self.frame.get_color(),
                             self.frame.get_prop(), self.frame.get_thickness())
            # Move the Hero
            self.pacman.move(self.screen)
            # Draw line behind the Hero
            pygame.draw.circle(self.screen, green, (170, 450), 5)
            # Draw the Hero
            self.screen.blit(self.pacman.show(),
                             (self.pacman.get_x(), self.pacman.get_y()))
            pygame.display.flip()
示例#8
0
def GetAllPoses():
    trTool = Frame()
    trTool.FromVctFrm3(pointerBody.measured_cp().Position())
    trArm = Frame()
    trArm.FromVctFrm3(armBody.measured_cp().Position())
    trBase = Frame()
    trBase.FromVctFrm3(referenceBody.measured_cp().Position())
    return trTool, trArm, trBase
示例#9
0
 def __init__(self, size):
     pygame.init()
     self.size = size
     self.screen = pygame.display.set_mode(size, 0, 32)
     self.color = black
     pygame.display.set_caption('PACMAN FOREVER YOUNG')
     self.run = True
     self.frame = Frame((50, 50, 1100, 800), cyan, 4)
     self.pacman = Pacman(self.frame)
     # game speed = number of operations per sec
     self.game_speed = 60
     self.lines = []
示例#10
0
    def run(self):

        oldbary = [self.bary[0], self.bary[1]]

        cap = cv2.VideoCapture(self.nom_video)
        ret, im = cap.read()

        for i in range(self.debut):
            ret, im = cap.read()

        frame = Frame.Frame(im, self.bary, self.bac, self.angle, self.seuil,
                            self.horizontal)

        cpt = 0

        while (cap.isOpened()):

            if ret == True:
                im = cv2.resize(im, (0, 0), 0, self.scale, self.scale,
                                cv2.INTER_AREA)
                im = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
                frame = Frame.Frame(im, frame.bary, self.bac, self.angle,
                                    self.seuil, self.horizontal)
                frame.mouseActualisation()
                self.actualiseGrid(oldbary, frame.bary, frame.im.shape[0],
                                   frame.im.shape[1])
                self.dparc = self.dparc + np.sqrt(
                    (frame.bary[0] - oldbary[0])**2 +
                    (frame.bary[1] - oldbary[1])**2)

                ## Debug : voir ce qu'il se passe pour chaque Frame ##############################################################
                #                print("oldbary-bary")
                #                print(oldbary,frame.bary)
                #                frame.showFrame(self.l_pix)
                #                self.grid.plotGrid()
                ##################################################################################################################

                oldbary = [frame.bary[0], frame.bary[1]]
            else:
                break
            if cpt > self.fps * 15 * 60:
                #            if cpt > 2:
                break

            ret, im = cap.read()
            cpt = cpt + 1

        cap.release()
        cv2.destroyAllWindows()
示例#11
0
def tofile(meshfile, bodyA, bodyB, sampleData, outfile):
    """
    :param meshfile: path to file that defines surface mesh
    :param bodyA: path to file that defines rigid body A
    :param bodyB: path to file that defines rigid body B
    :param sampleData: path to file that contains frames of sample data
    :param outfile: path to file to write output to

    :type meshfile: str
    :type bodyA: str
    :type bodyB: str
    :type sampleData: str
    :type outfile: str
    """
    vCoords, vIndices = icpf.meshDef(meshfile)

    nledA, ledA, tipA = icpf.bodyDef(bodyA)
    nledB, ledB, tipB = icpf.bodyDef(bodyB)

    aFrames, bFrames = icpf.readSample(sampleData, nledA, nledB)

    d_kPoints = icp.findTipB(aFrames, bFrames, ledA, tipA, ledB)

    s_i = icp.computeSamplePoints(d_kPoints, fr.Frame(np.identity(3), np.zeros(3)))

    c_kPoints = icp.ICPmatch(s_i, vCoords, vIndices)

    dist = icp.calcDifference(c_kPoints, d_kPoints)

    writefile(d_kPoints, c_kPoints, dist, outfile)
示例#12
0
    def register(self, b):
        """
        Performs rigid-body registration with respect to another point cloud b, and returns the corresponding frame
        transformation.
        :param b: The point cloud being mapped to
        :type b: PointCloud

        :return: The Frame transformation F = [r, p] from current frame to b
        :rtype: Frame.Frame
        """
        # NOTE: data, b are arrays of column vectors
        a_bar = np.mean(self.data, axis=1, keepdims=True)
        b_bar = np.mean(b.data, axis=1, keepdims=True)

        a_tilde = self.data - a_bar
        b_tilde = b.data - b_bar

        # Method using SVD to directly solve for R

        H = a_tilde.dot(b_tilde.T)

        u, s, v_t = scialg.svd(H)

        u = u.T
        v_t = v_t.T

        correction = np.identity(v_t.shape[1])
        correction[-1, -1] = scialg.det(v_t.dot(u))

        r = v_t.dot(correction.dot(u))
        
        p = b_bar - r.dot(a_bar)

        return Frame.Frame(r, p)
示例#13
0
    def create(self,
               maze_position=(screen_settings.screen_size[0] // 2,
                              screen_settings.screen_size[1]),
               display_type=0,
               graph_bool=False,
               cell_size_constant=1):
        """
        :param tuple maze_position: center of position; default: middle of screen
        :param int display_type: fullscreen = 0, half screen = 1, quarter_screen = 2
        :param bool graph_bool: if True displays the graph of the maze; delfault = True
        """
        self.position = maze_position

        self.cell_size = int(
            cell_size_constant * MazeFunctions.cell_size_calculate(
                display_type, self.type_value, self.size, graph_bool))

        self.graph_cell_size = MazeFunctions.graph_cell_size_calculate(
            self.type_value, self.cell_size)

        CellList.create(self.cell_list, self.type_value, maze_position,
                        display_type, graph_bool, self.cell_size)

        (start,
         end) = MazeFunctions.cell_endpoints_calculate(self.type_value,
                                                       self.size)

        self.start = self.cell_list[start]
        self.end = self.cell_list[end]
        self.frame_list = Frame.generation(self.type_value, self.cell_list)
def RadarDataRelateBasedonMachineLearning(realData = False, machineLearnEnable = False,mlModelType = 'KNN', totalSimuFile = 30, totalFramePerSimu = 10):
    mlModel = None
    if machineLearnEnable == True:#训练机器学习模型
        mlModel = RadarMl.RadarML(mlModelType)
        mlModel.DatasetProc(simu=True,scale_en= True, poly_en=False)
        mlModel.Train()
    if realData == True:#如果利用真实航迹作为数据源,则需要将真实数据进行分帧处理
        Frame.FrameCreat(save_en=True, plot_en=True, fakerate=50, sample_rate=5)

    for simuFileNo in range(totalSimuFile):    #对每一个仿真文件进行航迹关联处理
        processOutput = sys.stdout  # 标准图像输出
        plt.figure(figsize=(5, 40), dpi=100)  # 设置输出图像画布大小
        plt.vlines(x=[-5.5, -1.8, 1.8, 5.5], ymin=0, ymax=40, colors='yellow')  # 画出车道线

        tmpTracksList, totalTmpTracks = tmpTracksListInit()               #初始化临时航迹列表
        tmpStoragePoints,totalTmpStoragePoints = tmpStoragePointsInit()   #初始化临时点迹列表

        for frameNo in range(totalFramePerSimu):   #从文件中读取每帧量测
            if realData == True:
                frameInfor = Frame.FrameRead(frameNo)
            else:
                frameInfor = Frame.SimuFrameRead(simuFileNo,frameNo)

            count = frameNo / (totalFramePerSimu - 1) * 100   #计算显示每个仿真文件的处理进程
            processOutput.write(f'\r PROCESSING percent:{count:.0f}%')

            if machineLearnEnable == True:#机器学习模型应用于雷达量测分类
                frameInfor, mlMissPoints = mlModel.Applicate(frameInfor,scale_en=True)
            else:
                mlMissPoints  = pd.DataFrame([],columns=['Angle','Speed','X_position','Y_position','Target'])
            #对雷达量测进行航迹关联
            [frameInfor, tmpTracksList, tmpStoragePoints, totalTmpStoragePoints] = TrackRelate(frameInfor, tmpTracksList, totalTmpTracks, tmpStoragePoints, totalTmpStoragePoints,mlModel,machineLearnEnable = machineLearnEnable)
            #删除关联失败的航迹信息
            [tmpTracksList, totalTmpTracks, tmpStoragePoints, totalTmpStoragePoints, delete_points] = TrackDelet(tmpTracksList, totalTmpTracks, tmpStoragePoints, totalTmpStoragePoints)
            #没有正确关联的点作为新航迹
            [tmpTracksList, totalTmpTracks] = TrackNewDevelop(frameInfor, tmpTracksList, totalTmpTracks)
            #绘制关联成功的航迹
            [tmpStoragePoints, totalTmpStoragePoints] = TrackDraw(frameInfor, tmpTracksList, tmpStoragePoints, totalTmpStoragePoints, delete_points,mlMissPoints=mlMissPoints)

        processOutput.flush
        plt.xlim((-7, 7))#坐标属性设置
        plt.ylim((0, 40))
        plt.xlabel("X(m)")
        plt.ylabel("Y(m)")
        plt.show()
        plt.pause(0)#暂停显示关联结果
    return
示例#15
0
 def addAbsoluteOffset(self,
                       name,
                       offset=[0, 0, 0, 0, 0, 0, 1],
                       isMechanical=True):
     ## adding a offset given in absolute coordinates to the offset
     return RigidBody.Offset(self.node, name,
                             (Frame.Frame(offset) *
                              self.frame.inv()).offset(), isMechanical)
示例#16
0
 def generate_frames(self):
     can_create = self._memory_size % self._instructions_per_frame == 0
     if can_create:
         index = 0
         print("Creating frames...")
         for split in xrange(0, self._memory_size, self._instructions_per_frame):
             self._frames.append(Frame(index, split, split + self._instructions_per_frame - 1))
             index += 1
示例#17
0
 def __init__(self,**kwargs):
     n = kwargs.get('n',"app")
     x = kwargs.get('x',0)
     y = kwargs.get('y',0)
     w = kwargs.get('w',0)
     h = kwargs.get('h',0)
     t = kwargs.get('t',"Application")
     self.main = Frame(n,x,y,w,h,t)
     return
示例#18
0
    def setFromRigidInfo(self,
                         info,
                         offset=[0, 0, 0, 0, 0, 0, 1],
                         inertia_forces=False):
        self.framecom = Frame.Frame()
        self.framecom.rotation = info.inertia_rotation
        self.framecom.translation = info.com

        self.frame = Frame.Frame(offset) * self.framecom

        self.dofs = self.frame.insert(self.node,
                                      name='dofs',
                                      template="Rigid3" + template_suffix)
        self.mass = self.node.createObject('RigidMass',
                                           name='mass',
                                           mass=info.mass,
                                           inertia=concat(
                                               info.diagonal_inertia),
                                           inertia_forces=inertia_forces)
示例#19
0
 def addAbsoluteMappedPoint(self,
                            name,
                            position=[0, 0, 0],
                            isMechanical=True):
     ## adding a position given in absolute coordinates to the rigid body
     frame = Frame.Frame()
     frame.translation = position
     return RigidBody.MappedPoint(
         self.node, name, (frame * self.frame.inv()).translation,
         isMechanical)
示例#20
0
 def addMappedPoint(self,
                    name,
                    relativePosition=[0, 0, 0],
                    isMechanical=True):
     ## adding a relative position to the rigid body
     # @warning the translation due to the center of mass offset is automatically removed. If necessary a function without this mechanism could be added
     frame = Frame.Frame()
     frame.translation = relativePosition
     return RigidBody.MappedPoint(self.node, name,
                                  (self.framecom.inv() * frame).translation,
                                  isMechanical)
示例#21
0
 def addVisualModel(self,
                    filepath,
                    scale3d=[1, 1, 1],
                    offset=[0, 0, 0, 0, 0, 0, 1],
                    name_suffix=''):
     ## adding a visual model to the rigid body with a relative offset
     # @warning the translation due to the center of mass offset is automatically removed. If necessary a function without this mechanism could be added
     self.visual = RigidBody.VisualModel(
         self.node, filepath, scale3d,
         (self.framecom.inv() * Frame.Frame(offset)).offset(), name_suffix)
     return self.visual
示例#22
0
 def addCollisionMesh(self,
                      filepath,
                      scale3d=[1, 1, 1],
                      offset=[0, 0, 0, 0, 0, 0, 1],
                      name_suffix=''):
     ## adding a collision mesh to the rigid body with a relative offset
     # (only a Triangle collision model is created, more models can be added manually)
     # @warning the translation due to the center of mass offset is automatically removed. If necessary a function without this mechanism could be added
     self.collision = RigidBody.CollisionMesh(
         self.node, filepath, scale3d,
         (self.framecom.inv() * Frame.Frame(offset)).offset(), name_suffix)
     return self.collision
示例#23
0
def draw_summary(draw, forecast, fontpath, frame):
    text = forecast.hourly().summary
    font = ImageFont.truetype(fontpath, 30)
    width = Frame.width(frame)

    wrapped = font_utils.wrap_text_to_width(text, font, width - 20)
    size = draw.textsize(wrapped, font)

    draw.text((halfwidth + 10, halfheight - (size[1] / 2)),
              wrapped,
              font=font,
              fill=0)
示例#24
0
class Application:
    
    def __init__(self,**kwargs):
        n = kwargs.get('n',"app")
        x = kwargs.get('x',0)
        y = kwargs.get('y',0)
        w = kwargs.get('w',0)
        h = kwargs.get('h',0)
        t = kwargs.get('t',"Application")
        self.main = Frame(n,x,y,w,h,t)
        return
    def run(self):
        while(self.main.Win.is_open):
            self.main.Update()
            self.main.Draw()
        return
    def setBackgroundColor(self,x):
        self.main.setBackgroundColor(x)
        return
    def addComponent(self,x):
        self.main.addComponent(x)
def move_list(data):
  move_list=[]
  curr_move=Move()
  curr_frame=Frame()

  last_frameid=None;

  for row in range(0, len(data)):
    if (data[row]):
      #Each row represents a finger in a frame
      curr_finger=Finger(data[row])
      #Handle the first entry
      if (row==0):
        curr_frame.id=curr_finger.frame
        curr_frame.Fingers.append(curr_finger)
        curr_frame.numFingers+=1
      else:
        #A new frame has begun
        if (curr_frame.id!=curr_finger.frame):
          #Check if the old frame was still or stopped (i.e. fingers lifted off)
          #and if so, end the last move and add it to the list of moves.
          if(curr_frame.is_still()) or (curr_frame.is_stopped()):
          #We don't care about collecting still-frame data so just disregard it
          #but end the move accordingly.
             
            #We know the current move has ended so added it to the list of moves
            #but only if there are frames in it, this is to mitigate the fact that
            #WHENEVER there is a still frame a new Move obj is created, but
            #we don't care about these.
            if (curr_move.Framelist):
              curr_move.endAngle=curr_frame.Fingers[0].angle #Only looks at one finger
              curr_move.endXVel=curr_frame.Fingers[0].xvel   #Only looks at one finger
              move_list.append(curr_move)
            curr_move=Move()
          #The last frame was neither still nor stopped, but we need to add it
          #to the current move.
          else:
            if (not curr_move.Framelist):
              curr_move.startAngle=curr_frame.Fingers[0].angle #Not actually accurate e.g. it only looks at one finger
              curr_move.startXVel=curr_frame.Fingers[0].xvel   #Not accurate, see above.
            curr_move.Framelist.append(curr_frame)
            if (curr_frame.numFingers > curr_move.maxFingers):
              curr_move.maxFingers=curr_frame.numFingers
            if (curr_frame.numFingers < curr_move.minFingers):
              curr_move.minFingers=curr_frame.numFingers             
          #Update the current frame
          curr_frame=Frame()
          curr_frame.id=curr_finger.frame
          curr_frame.Fingers.append(curr_finger)
          curr_frame.numFingers+=1
       #A new frame has not begun but there are more fingers to add to it. 
        else:          
          curr_frame.Fingers.append(curr_finger)
          curr_frame.numFingers+=1
  if (curr_move.Framelist):
    curr_move.endAngle=curr_frame.Fingers[0].angle #Only looks at one finger
    curr_move.endXVel=curr_frame.Fingers[0].xvel   #Only looks at one finger
    move_list.append(curr_move)        
  return move_list       
示例#26
0
    def initialize(self):
        '''
        It's better to call this method after create all objects'''
        self.timeNow = now.time()
        if self.frame :
            print('Frame already created')
        else :
            self.frame = Frame.Frame(self)
        self.updateScreen()

        self.mouse = Mouse.Mouse(self)
        self.keyboard = Keyboard.Keyboard(self)
        self.running = True
示例#27
0
    def mass_from_mesh(self, name, density=1000.0):
        info = generate_rigid(name, density)

        self.mass = info.mass

        # TODO svd inertia tensor, extract rotation quaternion

        self.inertia = [
            info.inertia[0, 0], info.inertia[1, 1], info.inertia[2, 2]
        ]

        self.offset = Frame.Frame()
        self.offset.translation = info.com
示例#28
0
 def __init__(self, name="unnamed"):
     self.name = name  # node name
     self.collision = None  # collision mesh
     self.visual = None  # visual mesh
     self.dofs = Frame.Frame()  # initial dofs
     self.mass = 1  # mass
     self.inertia = [1, 1, 1]  # inertia tensor
     self.color = [1, 1, 1]  # not sure this is used
     self.offset = None  # rigid offset for com/inertia axes
     self.inertia_forces = 0  # 0: disabled, 1: explicit, 2: implicit
     self.group = None
     self.mu = 0  # friction coefficient
     self.scale = [1, 1, 1]
    def render(self, frame, boxsampler):
        """
		takes a set of objects and renders the frame
		boxsapmler is a sampler of bounding boxes (from the prior)
		"""
        renderedboxes = []
        for i in frame.boundingboxes:
            if random.random() < self.detectionprob:
                renderedboxes.append(i)
        if random.random() < self.illusionprob:
            for j in range(len(np.random.poisson(self.illusionlambda))):
                renderedboxes.append(boxsampler.sample())
        return Frame.Frame(renderedboxes)
示例#30
0
 def setManually(self,
                 offset=[0, 0, 0, 0, 0, 0, 1],
                 mass=1,
                 inertia=[1, 1, 1],
                 inertia_forces=False):
     ## create the rigid body by manually giving its inertia
     self.frame = Frame.Frame(offset)
     self.dofs = self.frame.insert(self.node,
                                   name='dofs',
                                   template="Rigid3" + template_suffix)
     self.mass = self.node.createObject('RigidMass',
                                        name='mass',
                                        mass=mass,
                                        inertia=concat(inertia),
                                        inertia_forces=inertia_forces)
示例#31
0
    def _FindCovFrame(self, *args):
        """
        Finds the frame of this covariance tree node.
        :param args: Either just the number of triangles, or the number of triangles and a list of triangles.
        :type args: integer and [Triangle]

        :return: The frame of this covariance tree node
        :rtype: fr.Frame
        """
        if len(args) == 1:
            points = None
            num_triangles = args[0]
            for i in range(num_triangles):
                if i == 0:
                    points = self.triangle_list[i].corners.data.tolist()
                else:
                    for p in self.triangle_list[i].corners.data.tolist():
                        points.append(p)

            points = np.array(points).squeeze().T

            return self._FindCovFrame(points, num_triangles * 3)

        elif len(args) == 2:
            points = args[0][:, 0:args[1]]
            c = np.mean(points, axis=1, keepdims=True)
            u = points - c

            A = u.dot(u.T)

            evals, evecs = np.linalg.eig(A)

            inds = evals.argsort()[::-1]

            max_evec = evecs[inds[0]]

            coeffs = np.zeros((3, 9))
            coeffs[(0, 1, 2), (0, 3, 6)] = 1.0

            r = np.linalg.lstsq(coeffs, max_evec)[0].reshape((3, 3))
            u, s, v = np.linalg.svd(r)

            correction = np.eye(3)
            correction[-1, -1] = scialg.det(v.T.dot(u.T))

            r = u.dot(correction.dot(v))

            return fr.Frame(r, c)
示例#32
0
def main():
    parser = argparse.ArgumentParser("Extract frames from a media file\n")
    parser.add_argument(
        '-O',
        '--out',
        dest='dstfmt',
        help="Set destination folder and format of frames extracted")
    parser.add_argument('-N',
                        '--nframes',
                        dest='nframes_requested',
                        type=int,
                        help="Save up to nframes")
    parser.add_argument('-B',
                        '--bulksave',
                        dest='bulksave',
                        action='store_true',
                        help="Enable bulk saving")
    parser.add_argument('-S',
                        '--sepsave',
                        dest='sepsave',
                        action='store_true',
                        help="Enable seperated save")
    parser.add_argument('-I',
                        '--infile',
                        dest='infile',
                        help="Media file to be extracted from")

    args = parser.parse_args()

    if (args.infile == None):
        print(f'{sys.argv[0]}: fatal error: no input file\nTerminating.')
        exit(1)

    if (args.dstfmt == None):
        print(
            f'{sys.argv[0]}: fatal error: output format not supplied\nTerminating.'
        )
        exit(1)

    f = Frame.Frame()
    f.open(args.infile)
    f.extract(dstfmt=args.dstfmt, nframes=60, skip=1)
    f.extract(dstfmt=args.dstfmt,
              nframes=args.nframes_requested,
              bulksave=args.bulksave,
              sepsave=args.sepsave)
    f.close()
def main():
    ##########################################################
    ############     通过读取帧文件获取数据    ###############
    ##########################################################
    hough_frame = pd.DataFrame([])
    #读取数据
    for i in range(5):
        frame_infor = Frame.SimuFrameRead(i)

        infor = [hough_frame, frame_infor]
        hough_frame = pd.concat(infor, ignore_index=True)

    #hough_frame = SunLearn.MyClassify(hough_frame)#利用机器学习算法对点迹进行分类
    x_idxs = hough_frame['X_position']
    y_idxs = hough_frame['Y_position']
    x_idxs.index = range(len(x_idxs))
    y_idxs.index = range(len(y_idxs))

    ##########################################################

    ##########################################################
    ################通过自定义点获取数据######################
    ##########################################################
    # x1 = [0, 1, 2, 3, 4, -10]
    # y1 = [10, 10, 10, 10, 10, 10]
    #
    # x2 = [0, 1, 2, 3, 4, 5, 6]
    # y2 = [7, 8, 9, 10, 11, 12, 13]
    #
    # x3 = [5, 5, 5, 5, 5, 5]
    # y3 = [23, 24, 25, 26, 27, 28]
    #
    # x4 = [-8, -7, -6, -5, -4, -3, -2, -1, 0]
    # y4 = [22, 21, 20, 19, 18, 17, 16, 15, 14]
    #
    # x_idxs = x4 + x3 + x2 + x1
    # y_idxs = y4 + y3 + y2 + y1
    ##########################################################
    [theta, rho] = hough_line(x_idxs, y_idxs, angle_step=2)  #霍夫直线检测
    theta, rho = theta_fuse(theta, rho, 30)  #角度融合
    Pointsplot(x_idxs, y_idxs)  # 画出需要检测直线的点
    plt.show()
    Pointsplot(x_idxs, y_idxs)  # 画出需要检测直线的点
    lineplot(theta, rho)  #根据参数画出直线
    return
示例#34
0
def performTransmissions(A, K, F, e, R, rnd):

    f = Frame.Frame(K, F)

    elapsed_time = 0
    frames_total = 0
    frames_correct = 0

    while elapsed_time < R:
        # transmission time is the feedback time + 1 time unit per bit
        elapsed_time += A + F + f.getWastedData()
        frames_total += 1

        if f.performErrorChance(e, rnd):
            # Successful transmission
            frames_correct += 1

    return [elapsed_time, frames_total, frames_correct]
示例#35
0
文件: Main.py 项目: Aym83/TIPE
from Planet import *
from Spaceship import *
from Frame import *
import time

frame = Frame()

objects = []

##Appel des fonctions pour le système solaire et le vaisseau
soleil = Planet(None, "Soleil", 1.99e30, 1.39e6, 0, 0)
soleil.x = frame.frame.winfo_screenwidth()/2
soleil.y = frame.frame.winfo_screenheight()/2

mercure = Planet(soleil, "Mercure", 3.29e23, 4.88e3, 5.79e7, 61.76)
venus = Planet(soleil, "Venus", 4.87e24, 1.21e4, 1.08e8, -1.2)
terre = Planet(soleil, "Terre", 5.97e24, 1.27e4, 1.49e8, 0)
lune = Planet(terre, "Lune", 7.35e22, 3.47e3, 3.84e5, 0)
mars = Planet(soleil, "Mars", 6.42e23, 6.78e3, 2.27e8, 7.37)
jupiter = Planet(soleil, "Jupiter", 1.90e27, 1.40e5, 7.79e8, 82.87) 
saturne = Planet(soleil, "Saturne", 5.68e26, 1.16e5, 1.42e9, 5.32)
uranus = Planet(soleil, "Uranus", 8.68e25, 5.07e4, 2.88e9, -54.7)
neptune = Planet(soleil, "Neptune", 1.02e26, 4.92e4, 4.50e9, -96.2)

vaisseau = Spaceship(soleil.x, soleil.y)

objects.append(soleil)
objects.append(mercure)
objects.append(venus)
objects.append(terre)
objects.append(lune)
示例#36
0
    def cpu(self):
        
        """
        the first main frame should return to the HALT instruction, which is the last
        quadruple
        """
        HALTinstIdx = len(self.code) - 1
        mainMethodFrame = Frame(self.mainMethod, HALTinstIdx)
        mainObject = ObjectSpace(self.mainClass)
        mainMethodFrame.registers[0] = mainObject
        self.callStack.push(mainMethodFrame)

        quadruple = self.code[self.ip]
        toBeInvokedFrame = None
        while (quadruple.opCode != "HALT" and self.ip < len(self.code)):
            registers = self.callStack.peek().registers  #shortcut to current stack registers
            self.ip = self.ip + 1 #almost all the instructions should increment the ip
                                #if not, the instruction should take care of it
                
            if(quadruple.opCode == "+"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] + registers[offset(op2)]
            elif(quadruple.opCode == "-"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] - registers[offset(op2)]
            elif(quadruple.opCode == "*"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] * registers[offset(op2)]
            elif(quadruple.opCode == "/"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] / registers[offset(op2)]
            elif(quadruple.opCode == "or"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] or registers[offset(op2)]
            elif(quadruple.opCode == "and"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] and registers[offset(op2)]
            elif(quadruple.opCode == "=="):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] == registers[offset(op2)]
            elif(quadruple.opCode == "!="):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] != registers[offset(op2)]
            elif(quadruple.opCode == ">="):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] >= registers[offset(op2)]
            elif(quadruple.opCode == ">"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] > registers[offset(op2)]
            elif(quadruple.opCode == "<="):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] <= registers[offset(op2)]
            elif(quadruple.opCode == "<"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op3)] = registers[offset(op1)] < registers[offset(op2)]
            elif(quadruple.opCode == "PRINT"):
                op1 = int(quadruple.op1)
                print(str(registers[offset(op1)]), end = "")
            elif(quadruple.opCode == "PRINTLINE"):
                print()
            elif(quadruple.opCode == "READINT"):
                op1 = int(quadruple.op1)
                read = input()
                try:
                    tmp = int(read)
                except ValueError:
                    exit("ERROR Inesperado: Se leyo una literal no valida en readint(): " + read)
                registers[offset(op1)] = tmp
            elif(quadruple.opCode == "READDOUBLE"):
                op1 = int(quadruple.op1)
                read = input()
                try:
                    tmp = float(read)
                except ValueError:
                    exit("ERROR Inesperado: Se leyo una literal no valida en readdouble(): " + read)
                registers[offset(op1)] = tmp
            elif(quadruple.opCode == "READCHAR"):
                op1 = int(quadruple.op1)
                read = input()
                if(len(read) > 1):
                    exit("ERROR Inesperado: Se leyo mas de un caracter en readchar(): " + read)
                registers[offset(op1)] = read
            elif(quadruple.opCode == "GOTOFALSE"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                if(not registers[offset(op1)]):
                    self.ip = op2
            elif(quadruple.opCode == "GOTO"):
                op1 = int(quadruple.op1)
                self.ip = op1
            elif(quadruple.opCode == "CCONST"):
                op1 = quadruple.op1
                op2 = int(quadruple.op2)
                registers[offset(op2)] = chr(ord(op1))
            elif(quadruple.opCode == "DCONST"):
                op1 = float(quadruple.op1)
                op2 = int(quadruple.op2)
                registers[offset(op2)] = op1
            elif(quadruple.opCode == "ICONST"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                registers[offset(op2)] = op1
            elif(quadruple.opCode == "="):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                registers[offset(op2)] = registers[offset(op1)]
            elif(quadruple.opCode == "ERA"):
                op1 = quadruple.op1
                methodToBeInvoked = self.methodsDirectory[op1]
                toBeInvokedFrame = Frame(methodToBeInvoked, -1) #the return address of the invokedFrame should be set in the GOSUB/GOSUBVOID.
                                                                #here we leave it pending with a -1
            elif(quadruple.opCode == "PARAM"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                toBeInvokedFrame.registers[op2] = registers[offset(op1)]
            elif(quadruple.opCode == "GOSUB"):
                op1 = quadruple.op1
                op2 = int(quadruple.op2)
                invokedMethodSymbol = self.methodsDirectory[op1]
                callerFrame = self.callStack.peek()
                callerFrame.tempReturned = op2  #register that will be used to store the value that invokedFrame will return. No offseted yet
                toBeInvokedFrame.returnAddress = self.ip
                self.callStack.push(toBeInvokedFrame)
                self.ip = invokedMethodSymbol.firstQuadrupleIdx
            elif(quadruple.opCode == "GOSUBVOID"):
                op1 = quadruple.op1
                invokedMethodSymbol = self.methodsDirectory[op1]
                callerFrame = self.callStack.peek()
                toBeInvokedFrame.returnAddress = self.ip
                self.callStack.push(toBeInvokedFrame)
                self.ip = invokedMethodSymbol.firstQuadrupleIdx
            elif(quadruple.opCode == "RETURN"):
                op1 = int(quadruple.op1)
                returnValue = registers[offset(op1)]
                popedFrame = self.callStack.pop()
                callerFrame = self.callStack.peek()
                callerFrame.registers[offset(callerFrame.tempReturned)] = returnValue
                self.ip = popedFrame.returnAddress
            elif(quadruple.opCode == "RETURNVOID"):
                popedFrame = self.callStack.pop()
                self.ip = popedFrame.returnAddress
            elif(quadruple.opCode == "SHOULD_RETURN_SOMETHING_ERROR"):
                op1 = quadruple.op1
                exit("ERROR Inesperado: Metodo " + op1 + " no regreso nada...")
            elif(quadruple.opCode == "OBJECT"):
                op1 = int(quadruple.op1)
                op2 = quadruple.op2.strip()
                clase = self.classesDirectory[op2]
                obj = ObjectSpace(clase)
                registers[offset(op1)] = obj
            elif(quadruple.opCode == "PUTFIELD"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op2)].fields[op3] = registers[offset(op1)]
            elif(quadruple.opCode == "GETFIELD"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                op3 = int(quadruple.op3)
                registers[offset(op1)] = registers[offset(op2)].fields[op3]
            elif(quadruple.opCode == "VERIFYARRAYACCESS"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                if(registers[offset(op1)] < 0 or registers[offset(op1)] >= op2):
                    exit("ERROR Inesperado: Indice " + str(registers[offset(op1)]) + " fuera de rango en acceso a elemento de arreglo.")
            elif(quadruple.opCode == "GETARRAYELEM"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                registers[offset(op2)] = registers[offset(registers[offset(op1)])]
            elif(quadruple.opCode == "PUTARRAYELEM"):
                op1 = int(quadruple.op1)
                op2 = int(quadruple.op2)
                registers[offset(registers[offset(op1)])] = registers[offset(op2)]
            else:
                print("Cuadruplo no reconocido: " + quadruple.opCode)
            quadruple = self.code[self.ip]
示例#37
0
from Planet import *
from Spaceship import *
from Frame import *
from Maths import *
from Point import *
from File import *
import time

frame = Frame()

objects = []
points = []

soleil = Planet(None, "Soleil", 1.99e30, 1.39e6, 0, 0, 0)
soleil.x = frame.tkFrame.winfo_screenwidth()/2
soleil.y = frame.tkFrame.winfo_screenheight()/2
soleil.speedX = 0
soleil.speedY = 0

#Définition: parent, name, mass, diam, dist, speed, theta
mercure = Planet(soleil, "Mercure", 3.29e23, 4.88e3, 5.79e10, 47879.56, 308)
venus = Planet(soleil, "Venus", 4.87e24, 1.21e4, 1.08e11, 35057.23, 168)
terre = Planet(soleil, "Terre", 5.97e24, 1.27e4, 1.49e11, 29846.70, 175)
lune = Planet(terre, "Lune", 7.35e22, 3.47e3, 3.84e8, 1018.32, 113.8)
mars = Planet(soleil, "Mars", 6.42e23, 6.78e3, 2.27e11, 24181.13, 313)
jupiter = Planet(soleil, "Jupiter", 1.90e27, 1.40e5, 7.79e11, 13053.31, 309) 
saturne = Planet(soleil, "Saturne", 5.68e26, 1.16e5, 1.42e12, 30573.51, 168)
uranus = Planet(soleil, "Uranus", 8.68e25, 5.07e4, 2.88e12, 6788.80, 353)
neptune = Planet(soleil, "Neptune", 1.02e26, 4.92e4, 4.50e12, 5431.04, 324)

vaisseau = Spaceship(200, 200)
示例#38
0
  def __init__(self):
    Frame.__init__(self)

    self._uniqueID  = None
    self._doneCallbacks = []
    self._failCallbacks = []
示例#39
0
文件: Main.py 项目: Setzio/TIPE
from Planet import *
from Spaceship import *
from Frame import *
from Maths import *
import time

frame = Frame()

objects = []

soleil = Planet(None, "Soleil", 1.99e30, 1.39e6, 0, 0)
soleil.x = frame.frame.winfo_screenwidth()/2
soleil.y = frame.frame.winfo_screenheight()/2

mercure = Planet(soleil, "Mercure", 3.29e23, 4.88e3, 5.79e7, 308)
venus = Planet(soleil, "Venus", 4.87e24, 1.21e4, 1.08e8, 168)
terre = Planet(soleil, "Terre", 5.97e24, 1.27e4, 1.49e8, 175)
lune = Planet(terre, "Lune", 7.35e22, 3.47e3, 3.84e5, 113.8)
mars = Planet(soleil, "Mars", 6.42e23, 6.78e3, 2.27e8, 313)
jupiter = Planet(soleil, "Jupiter", 1.90e27, 1.40e5, 7.79e8, 309) 
saturne = Planet(soleil, "Saturne", 5.68e26, 1.16e5, 1.42e9, 168)
uranus = Planet(soleil, "Uranus", 8.68e25, 5.07e4, 2.88e9, 353)
neptune = Planet(soleil, "Neptune", 1.02e26, 4.92e4, 4.50e9, 324)

vaisseau = Spaceship(300, 300)

objects.append(soleil)
objects.append(mercure)
objects.append(venus)
objects.append(terre)
objects.append(lune)
示例#40
0
 def OnInit(self):
     self.main = Frame.create(None)
     self.main.Show()
     self.SetTopWindow(self.main)
     return True