In [1]:
import time
import picam
import pylab
from datetime import datetime
from PIL import Image, ImageChops
In [2]:
#picam.config.awbMode = picam.MMAL_PARAM_AWBMODE_OFF
#picam.config.awbMode = picam.MMAL_PARAM_AWBMODE_INCANDESCENT
picam.config.awbMode = picam.MMAL_PARAM_AWBMODE_SUNLIGHT
# picam.config.exposure = picam.MMAL_PARAM_EXPOSUREMODE_OFF
# picam.config.exposure = picam.MMAL_PARAM_EXPOSUREMODE_VERYLONG
picam.config.exposure = picam.MMAL_PARAM_EXPOSUREMODE_SPORTS
picam.config.imageFX = picam.MMAL_PARAM_IMAGEFX_NONE
# picam.config.imageFX = picam.MMAL_PARAM_IMAGEFX_SKETCH
# picam.config.imageFX = picam.MMAL_PARAM_IMAGEFX_DENOISE
picam.config.meterMode = picam.MMAL_PARAM_EXPOSUREMETERINGMODE_MATRIX
#picam.config.shutterSpeed = 2e3 # 0 = auto, otherwise the shutter speed in ms
#picam.config.ISO = 100
picam.config.shutterSpeed = 0
picam.config.ISO = 100
In [3]:
def simple():
picam.config.shutterSpeed = 2e3 #0
picam.config.ISO = 800
return picam.takePhoto()
pylab.figure(figsize=(12,12))
pylab.imshow(simple(), origin='lower')
None
Out[3]:
In [4]:
def stack(filename='/tmp/test.jpg', n=10):
print 'Frame: ',
for i in range(n):
print i,
im = picam.takePhoto()
# im = im.resize((640,480), Image.ANTIALIAS)
# im = picam.takePhotoWithDetails(640,480, 100)
if i == 0:
out = im
else:
# out = out + im
# out = ImageChops.lighter(out, im)
# im = ImageChops.add(out, im)
# im = ImageChops.add(im, im, 0.5)
out = Image.blend(out,im,1/float(i+1))
# out = Image.blend(out,im,0.5)
# out = ImageChops.add(out,im,1)
print np.max(out),
out.save(filename)
return out
def timelapse(delta=1, n=60*24):
for i in range(n):
filename = datetime.now().strftime('data/snap_%Y.%m.%d_%H.%M.%S.jpg')
try:
x = stack(filename,10)
time.sleep(60)
except KeyboardInterrupt as e:
print 'Stopped by user'
break
return x
# x = stack()
# x = timelapse()
In [5]:
figure(figsize=(6,6))
x = stack()
imshow(x, vmin=0, vmax=np.max(x)*0.5);
In [ ]:
fig = figure(figsize=(16,6))
for i,im in enumerate(x.split(),1):
subplot(1,3,i)
# figure(figsize=(4,4))
im = imshow(im, vmin=0, vmax=np.max(x)*0.5)
if i == 3:
cax = pylab.axes([0.05,0.1,0.1,0.015])
cb = pylab.colorbar(im, cax=cax, orientation='horizontal')
cb.set_ticks([0, np.max(x)*0.25, np.max(x)*0.5])
In [56]:
# ((((a+b)/2.0+c)/2.0+d)/2.0+e)/2.0
# (((a/2+b/2+c)/2+d)/2+e)/2
# ((a/4+b/4+c/2+d)/2+e)/2
# (a/8+b/8+c/4+d/2+e)/2
# a/16+b/16+c/8+d/4+e/2
#((((a+b)/x1+c)/x2+d)/x3+e)/x4
#a/x1*x2*x3*x4 + b/x1*x2*x3*x4 + c/x2*x3*x4 + d/x3*x4 + e/x4
for i in range(10):
print i, 1.0/(i+1)
In [ ]: