def __init__(self, filename, grey=False): self.m = ffi.new("struct mjpg *") self.fcnt = 0 if grey: r = lib.mjpg_open(self.m, filename, lib.IMTYPE_GRAY, lib.IMORDER_PLANAR) self.channels = 1 else: r = lib.mjpg_open(self.m, filename, lib.IMTYPE_RGB, lib.IMORDER_INTERLEAVED) self.channels = 3 if r != lib.OK: raise IOError("Failed to open: " + filename)
def __init__(self, filename, grey=False): self.m = ffi.new("struct mjpg *") self.fcnt = 0 if grey: r = lib.mjpg_open(self.m, filename, lib.IMTYPE_GRAY, lib.IMORDER_INTERLEAVED) self.channels = 1 else: r = lib.mjpg_open(self.m, filename, lib.IMTYPE_RGB, lib.IMORDER_INTERLEAVED) self.channels = 3 if r != lib.OK: raise IOError("Failed to open: " + filename)
def jpg_info(filename): """ Reads a single jpeg image from the file *filename* and extracts the Axis user data header. The information it contains is returned as a dict with the keys "hwid", "serial_numer" and "firmware_version". """ if sys.version_info > (3, ): filename = bytes(filename, "utf8") m = ffi.new("struct mjpg *") r = lib.mjpg_open(m, filename, lib.IMTYPE_GRAY, lib.IMORDER_PLANAR) lib.mjpg_next_head(m) res = { 'hwid': ffi.string(m.hwid), 'serial_number': ffi.string(m.serial), 'firmware_version': ffi.string(m.firmware), 'timestamp': m.timestamp_sec + m.timestamp_usec / 1000000.0 } lib.mjpg_close(m) return res