Exemple #1
0
  def to_descfile(self):
    df = DescFile()

    df.data = []
    for i, f in enumerate(self.frames):
      lines = [[i+self.first_frame]+p for p in f]
      df.data += lines

    self.headers['type'] = 'PointsFile v.1.0'
    self.headers['width'] = str(self.width)
    self.headers['height'] = str(self.height)
    self.headers['uid'] = str(self.uid)

    df.headers = OrderedDict(self.headers)
    df.tags = ['f']+copy.copy(self.tags)

    return df
Exemple #2
0
  def from_string(points_desc_str=""):
    self = PointsDesc()
    df = DescFile.from_string(points_desc_str)

    assert( df.headers["type"] == "PointsFile v.1.0" )
    assert( "width" in df.headers and "height" in df.headers )

    self.headers = OrderedDict(df.headers)
    self.tags = copy.copy(df.tags)[1:]

    self.width = int(df.headers["width"])
    self.height = int(df.headers["height"])
    self.uid = int(df.headers["uid"])

    first_frame = None
    last_frame = None
    frames = []

    if len(df.data) > 0:
      nfields = len(df.data[0])
      assert( nfields >= 3 )
      self.nfields = nfields

      for entry in df.data:
        f = entry[0]
        if abs( f - int(f)) > 0.01:
          raise Exception("Error: first entry should be a frame number!")
        f = int(f)
        if first_frame == None or f < first_frame:
          first_frame = f
        if last_frame == None or f > last_frame:
          last_frame = f

      frames = [ [] for k in range(last_frame-first_frame+1) ]

      for entry in df.data:
        f = int(entry[0])-first_frame
        frames[f].append(entry[1:])

    self.first_frame = first_frame
    self.frames = frames

    return self