Example #1
0
def activaCamara():
	""" Se activa la camara para detectar movimiento 
	utilizando el algormitmo running segmentation de SimpleCV"""
	global proximo
	screenLength = resolucion[0] 
	min_blob_size = screenLength * 0.15
	max_blob_size = screenLength * 0.75
	ahora = datetime.datetime.now()
	
	img = util.tomaFoto(filename,brillo,resolucion,modoExposicion)
	rs.addImage(img)
	diffImg = rs.getSegmentedImage(False)
	
	if diffImg is not None:
		
		blobs = diffImg.dilate(3).findBlobs()
		
		if blobs is not None   :
			print screenLength, min_blob_size, blobs[-1].length(),  max_blob_size	
			
			if blobs[-1].length() > min_blob_size and blobs[-1].length() < max_blob_size :
				print "El sensor ha detectado algo relevante"
				mensaje = 'Alerta ' + str(ahora) + ".jpg"
				
				imagen = Image (filename)
				
				os.chdir(RUTA_BASE_LOCAL_ALERTAS)
				blobs.image = imagen
				blobs[-1].draw(width=5, color=Color.GREEN)
				imagen.drawText(str(ahora), x= 20, y =10, fontsize=25)
				imagen.save(str(ahora)+'.jpg')
				os.chdir(RUTA_BASE_LOCAL)
				
				destinatarios = ['*****@*****.**', '*****@*****.**'] 
				mensaje = 'Alerta de la alarma, visita https://www.dropbox.com para ver las fotos'
				mandaMensaje(mensaje, destinatarios)

	# ---------------------------------------------
	# Foto a intervalos regulares
	# ---------------------------------------------
	if ahora > proximo :
		print "tomada foto de cada hora"
		camara.tomaFoto(str(ahora) + ".jpg", brillo=50,resolucion=(640,480),preview=False,modoExposicion='auto')
		proximo = datetime.datetime.now() + periodo
from SimpleCV import Image , Display, Color, ColorCurve,DrawingLayer
import picamera
import utilidades as util
#import numpy as np

ALTURA_OBJETO = 85 #mm
DISTANCIA_FOCAL = 3.6 #mm
FACTOR_CONVERSION_PIXEL_A_MM = 295

img = util.tomaFoto("objeto.jpg", brillo = 55)
#img = Image("lineaDe4.jpg")
#img.live()

# El truco esta en buscar el color azul del tablero en lugar de ir directamente a por las fichas
img_tratada = img.binarize() 
#img_tratada.live()

blobGrande = img_tratada.findBlobs().sortArea()[-1]

if blobGrande:
	
	i_prima = blobGrande.length() / FACTOR_CONVERSION_PIXEL_A_MM
	d = (ALTURA_OBJETO * DISTANCIA_FOCAL / i_prima) / 10
	
	textLayer = DrawingLayer((img.width,img.height))
	textLayer.setFontSize(36)
	textLayer.text("Distancia = " + str(d) + " centimetros", (10,10), color=Color.RED)
	
	blobGrande.draw(width = 5, color = Color.RED)	
	img.addDrawingLayer(img_tratada.dl())
	img.addDrawingLayer(textLayer)