Beispiel #1
0
    def to_dict(self, extended=False):
        d = {}
        for k, v in self._data.items():
            if hasattr(v, "to_dict"):
                # Embedded document
                d[k] = v.to_dict(extended=extended)
            elif isinstance(v, np.ndarray):
                # Must handle arrays separately, since they are non-primitives

                # @todo cannot support serializing 1D arrays as lists because
                # there is no way for `from_dict` to know that the data should
                # be converted back to a numpy array
                #
                # if v.ndim == 1:
                #     d[k] = v.tolist()
                #

                v_binary = fou.serialize_numpy_array(v)
                if extended:
                    # @todo improve this
                    d[k] = json.loads(json_util.dumps(Binary(v_binary)))
                else:
                    d[k] = v_binary
            else:
                # JSON primitive
                d[k] = v

        return d
Beispiel #2
0
 def to_dict(self, extended=False):
     d = {}
     for k, v in self._data.items():
         if k == "frames" and self.media_type == fomm.VIDEO:
             d[k] = {str(fk): fv for fk, fv in v.items()}
         elif hasattr(v, "to_dict"):
             # Embedded document
             d[k] = v.to_dict(extended=extended)
         elif isinstance(v, np.ndarray):
             # Must handle arrays separately, since they are non-primitives
             v_binary = fou.serialize_numpy_array(v)
             if extended:
                 # @todo improve this
                 d[k] = json.loads(json_util.dumps(Binary(v_binary)))
             else:
                 d[k] = v_binary
         else:
             # JSON primitive
             d[k] = v
     return d
Beispiel #3
0
    def to_mongo(self, value):
        if value is None:
            return None

        bytes = fou.serialize_numpy_array(value)
        return super().to_mongo(bytes)
Beispiel #4
0
def _handle_numpy_array(raw, key=None):
    if key != "mask":
        return str(fou.deserialize_numpy_array(raw).shape)
    return fou.serialize_numpy_array(
        fou.deserialize_numpy_array(raw), ascii=True
    )