from __future__ import division from pylab import * import os, sys, re try: fn = sys.argv[1] except: print "Syntax: python %s BRAMPnn.LOG" % sys.argv[0] raise SystemExit f = open(fn) Fs = [] Es = [] Esr = [] Fb = [] Eb = [] F = [] Y = [] e0 = None ep = 0 while 1: l = f.readline() if not l: break m = re.match("([0-9a-f]+)", l) if not m: continue file_number = int(m.groups()[0]) m = re.match(".* shutter= *([0-9.]+)s", l) if m: shutter = float(m.groups()[0]) else: m = re.match(".* shutter= *([0-9]+)ms", l) if m: shutter = max(int(m.groups()[0]), 1./3) else: continue m = re.match(".* iso= *([0-9]+)", l) if not m: continue iso = int(m.groups()[0]) m = re.match(".* y=([\- 0-9]+)", l) if not m: continue y = int(m.groups()[0].replace(" ", "")) e = log2(shutter * iso/100) if e0 is None: e0 = int(e) if shutter < 100 and iso <= 200: Fs.append(file_number) Es.append(e - e0) Esr.append(int((e - e0)*4 + 0.5) / 4) else: Fb.append(file_number) Eb.append(e - e0) F.append(file_number) Y.append(ep - e0 - y/100) ep = e Y[0] = Y[1]; plot(Fs,Es,'r'), grid('on'), hold('on') plot(Fb,Eb,'b'), grid('on') plot(F, Y, 'y') plot(Fs,Esr,'r') print Y xlabel('Image number') ylabel('Exposure value (EV)') legend(['Regular exposure (1/8 EV flicker)', 'Bulb exposure', 'Estimated scene exposure level'], loc=4) show()