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)