Python R2


Mi notebook me conoce!!! (eigenface – python)

Posted in Python por Arturo Elias Antón en 13 febrero 2009
Tags: , , , , , ,

Del script de la entrada anterior más  “eigenface” (autocaras)  logre hacer que mi computadora solo se desbloquee cuando yo y solo yo (un problemita egocéntrico) estoy enfrente de ella.
Acá les dejo un tar.gz para que lo bajen y lo vean.  Dentro de el hay un archivo help con los pasos que tienen que tener para poder  usarlo.

link: http://www.binsd.com.ar/descarga/eigefaces.tar.gz

recordad que solo funciona gnome.

Para implementar eigenface : http://www.owlnet.rice.edu/~elec301/Projects99/faces/

como simpre espero sus comentarios y qe les guste!!!!

Mi notebook se bloquea cuando no la miro!!! OpenCV – Python

Posted in Python por Arturo Elias Antón en 10 febrero 2009
Tags: , , , , , ,

Con este pequeño script y el haarcascade: haarcascade_frontalface_alt.xml nuestra PC/notebook con gnome se bloqueara cuando no la miremos y si pasamos el ultimo parametro con “true” se activara volver a mirarla sin pedirnos ninguna contraseña.
El xml lo podran sacar del archivo zip que se puso en el post anterior “Introduccion a Python – OpenCV ”

#!/usr/bin/python

import pygame
import Image
import sys
import os
from pygame.locals import *
import opencv
from opencv import adaptors
from opencv import highgui,cv

scale = 2
def sincroImg(image):
	image_size  = cv.cvGetSize(image)
	grayscale   = cv.cvCreateImage(image_size, 8, 1)
	image_small = cv.cvCreateImage(cv.cvSize(cv.cvRound(image.width/scale),cv.cvRound(image.height/scale)), 8, 1)
	cv.cvCvtColor(image, grayscale, cv.CV_BGR2GRAY)
	cv.cvResize(grayscale,image_small,cv.CV_INTER_LINEAR)
	cv.cvEqualizeHist(grayscale, grayscale)
    	return grayscale

def dectect(img,cascade,storage):
	cv.cvClearMemStorage(storage)
	return cv.cvHaarDetectObjects(
                                   img,
                                   cascade,
                                   storage,
                                   scale,
                                   2,
                                   cv.CV_HAAR_DO_CANNY_PRUNING)

camara = highgui.cvCreateCameraCapture(0)

fps = 30
pygame.init()
ventana = pygame.display.set_mode((320,240))
pygame.display.set_caption("Lock-See")
screen = pygame.display.get_surface()

print "OpenCV version: %s (%d, %d, %d)" % (cv.CV_VERSION,
                                               cv.CV_MAJOR_VERSION,
                                               cv.CV_MINOR_VERSION,
                                               cv.CV_SUBMINOR_VERSION)

cascade_name       = sys.argv[1]
storage = cv.cvCreateMemStorage(0)
cascade = cv.cvLoadHaarClassifierCascade(cascade_name, cv.cvSize(14,14))

paramTime = 10
paramClave = "false"

if len(sys.argv) >= 3: paramTime = int(sys.argv[2])
if len(sys.argv) == 4: paramClave = sys.argv[3]

print "Lock-See v0.1"
print paramTime,",",paramClave

scale = 2
notPresent = 0
while True:
	img1 = highgui.cvQueryFrame(camara)

        # face detection
	sincroImg(img1)
        faces = dectect(img1,cascade,storage)
	if faces.total != 0:
		if (notPresent !=0) and paramClave == "true":
			 os.system("gnome-screensaver-command --deactivate")

		notPresent = 0
		for face in  faces:
			cv.cvRectangle(img1,
				cv.cvPoint( int(face.x), int(face.y)),
				cv.cvPoint(int(face.x + face.width), int(face.y + face.height)),
				cv.CV_RGB(255,0,0), 3, 8, 0)
	else:
		notPresent += 1
		if notPresent >= paramTime:
			os.system("gnome-screensaver-command --lock")

	img = adaptors.Ipl2PIL(img1).resize((320,240))
	pgimg = pygame.image.frombuffer(img.tostring(), img.size, img.mode)
    	screen.blit(pgimg, (0,0))
    	pygame.display.flip()
    	pygame.time.delay(int(1000 * 1.0/fps))

Como siempre espero que les guste y cualquier duda solo tienen que preguntarme a mi mail o consultarlo en el grupo binsd

Saludos y espero que les guste.

Antes que nada quiero decir que me parecio mas util el bloqueador por bluetooth de javier perez

Introduccion a Python – OpenCV

Posted in Python por Arturo Elias Antón en 8 febrero 2009
Tags: , , , , ,

Vamos a reconocer el rostro de nuestros usuario y dentro de el los ojos y la boca y la nariz. Para esto en esta oportunidad vamos a utilizar una biblioteca llamada opencv.

Acá les dejo el código

#!/usr/bin/python

import pygame
import Image
from pygame.locals import *
import opencv
from opencv import adaptors
from opencv import highgui,cv

def sincroImg(image,scale):
	image_size  = cv.cvGetSize(image)
	grayscale   = cv.cvCreateImage(image_size, 8, 1)
	image_small = cv.cvCreateImage(cv.cvSize(cv.cvRound(image.width/scale),cv.cvRound(image.height/scale)), 8, 1)
	cv.cvCvtColor(image, grayscale, cv.CV_BGR2GRAY)
	cv.cvResize(grayscale,image_small,cv.CV_INTER_LINEAR)
	cv.cvEqualizeHist(grayscale, grayscale)
    	return grayscale

def dectect(img,cascade,storage,x,y,scale):
	cv.cvClearMemStorage(storage)
	return cv.cvHaarDetectObjects(
                                   img,
                                   cascade,
                                   storage,
                                   scale,
                                   2,
                                   0,#cv.CV_HAAR_DO_CANNY_PRUNING,
                                   cv.cvSize(x, y))

camara = highgui.cvCreateCameraCapture(0)

fps = 30
pygame.init()
ventana = pygame.display.set_mode((320,240))
pygame.display.set_caption("OpenCV + Webcam Test")
screen = pygame.display.get_surface()

print "OpenCV version: %s (%d, %d, %d)" % (cv.CV_VERSION,
                                               cv.CV_MAJOR_VERSION,
                                               cv.CV_MINOR_VERSION,
                                               cv.CV_SUBMINOR_VERSION)

cascade_name       ='xml/haarcascade_frontalface_alt.xml'
cascade_name_nariz ='xml/nariz.xml'
cascade_name_ojos  ='xml/ojos.xml'
cascade_name_boca  ='xml/boca.xml'
storage = cv.cvCreateMemStorage(0)

cascade = cv.cvLoadHaarClassifierCascade(cascade_name, cv.cvSize(14,14))
cascade_nariz = cv.cvLoadHaarClassifierCascade(cascade_name_nariz, cv.cvSize(14,14))
cascade_ojos = cv.cvLoadHaarClassifierCascade(cascade_name_ojos, cv.cvSize(22,22))
cascade_boca = cv.cvLoadHaarClassifierCascade(cascade_name_boca, cv.cvSize(25,15))

scale = 2
inx=0
while True:
	img1 = highgui.cvQueryFrame(camara)

        # face detection
	sincroImg(img1,scale)
        faces = dectect(img1,cascade,storage,50,50,scale)
	b_ojos = False
	b_boca = False
	b_nariz= False
	if faces.total != 0:
		face = faces[0]
		cv.cvRectangle(img1,
			cv.cvPoint( int(face.x), int(face.y)),
			cv.cvPoint(int(face.x + face.width), int(face.y + face.height)),
			cv.CV_RGB(255,0,0), 3, 8, 0)
		face_x1 = int(face.x)
		face_y1 = int(face.y)
		face_x2 = int(face.x + face.width)
		face_y2 = int(face.y + face.height)

		ojos  = dectect(img1,cascade_ojos,storage,20,20,scale)
		for o in ojos:
			if o.x > face_x1 and o.y > face_y1 and (o.x + o.width) < face_x2 and  (o.y + o.height) < face_y2:
				cv.cvRectangle(img1,
					cv.cvPoint( int(o.x), int(o.y)),
					cv.cvPoint(int(o.x + o.width), int(o.y + o.height)),
					cv.CV_RGB(0,0,255), 3, 8, 0)
				ojos_x1= o.x
				ojos_y1= o.y
				ojos_x2= o.x + o.width
				ojos_y2= o.y + o.height
				b_ojos=True;
		bocas =[]
		if b_ojos:bocas  = dectect(img1,cascade_boca,storage,60,30,scale)
		for b in bocas:
			if b.x > ojos_x1 and b.y > ojos_y2 and (b.x + b.width) < ojos_x2 and  (b.y + b.height) < face_y2:
				cv.cvRectangle(img1,
					cv.cvPoint( int(b.x), int(b.y)),
					cv.cvPoint(int(b.x + b.width), int(b.y + b.height)),
					cv.CV_RGB(0,255,0), 3, 8, 0)
				boca_x1= b.x
				boca_y1= b.y
				boca_x2= b.x + b.width
				boca_y2= b.y + b.height
				b_boca= True

		narices =[]
		if b_boca:narices  = dectect(img1,cascade_nariz,storage,40,40,scale)
		for n in narices:
			if n.x > ojos_x1 and n.y < boca_y1 and n.y >= ojos_y2 and n.x + n.width < ojos_x2 :
				cv.cvRectangle(img1,
					cv.cvPoint( int(n.x), int(n.y)),
					cv.cvPoint(int(n.x + n.width), int(n.y + n.height)),
					cv.CV_RGB(0,0,0), 3, 8, 0)
				b_nariz = True

	img = adaptors.Ipl2PIL(img1).resize((320,240))

	if b_nariz:
		img.save('img/img'+str(inx)+'.jpg')
		inx+=1

	pgimg = pygame.image.frombuffer(img.tostring(), img.size, img.mode)
    	screen.blit(pgimg, (0,0))
    	pygame.display.flip()
    	pygame.time.delay(int(1000 * 1.0/fps))

Espero que les guste 🙂

Aca dejo un tar.gz con todos los xml necesarios y algunos otros para que prueben

Link a haarcascades(XMLs): xml.tar.gz

No se olviden de anotarse al grupo binsd de google 😛

Inauguración de la Sección PyRecetas

Posted in C#,Python por Arturo Elias Antón en 4 febrero 2009
Tags: , , ,

Se inauguro la sección recetas para que todos nosotros podamos compartir nuestros scripts y códigos  con el resto de la comunidad binsSD ejeje.
Espero que esta sección funcione así voy armando un subidor de recetas de programación y un ranking de usuarios.

Codigo y nueva versión de WebCam – Commander

Posted in C# por Arturo Elias Antón en 26 enero 2009
Tags: , , , , , , , ,

Código y nueva versión de WebCam – Commander

Bueno jugando con mis particiones Linux y Windows termine rompiendo todo mi disco.
Así que este fin de semana me dedique a re – codificar WebCam – Commander. Y acá un lo tienen para los que quieren ver un poco de C#.

link : Download Source

Como siempre espero que les guste y que me comenten que les pareció!!! 😉

 

Gracias Ariel por tu colaboración

WebCam – Commander (move el mouse con la cabeza)

Posted in C#,Software por Arturo Elias Antón en 22 enero 2009
Tags: , , , , , , , ,

Este es mi primer desarrollo en C#, webcams-comader. Así que les dejo el programa en formato rar para que lo puedan bajar y probar. Es un programita para poder controlar el Mouse mediante una WebCam. 

Para darse una idea tengo un video publicado en la entrada anterior, hecho con pyMouse.py otro programa que hecho, pero ese en Python para control de Mouse mediante una Webcams.
Estos dos proyectos son muy similares. 

 

Download: web-camander.rar

Tambien les dejo un ScreenShot

Como siempre espero que les guste!!!!!!!!!!!!

y sus comentarios!!!

Moviendo la cabeza moviendo el mouse

Posted in Python por Arturo Elias Antón en 17 enero 2009
Tags: , , , , , ,

En esta oportunidad quiero compartir un video de un programita que estoy haciendo para mover el Mouse de la con la cabeza. Aunque verdaderamente es un poco rudimentario funciona bastante bien y espero sus comentarios.
Para mover el Mouse no se necesita más que una WebCam.

http://www.youtube.com/watch?v=Q8_To4EO18w

Acá si bien no esta pulido y es bastante feo, les dejo el código 😉
Download del pyMouse.py

Como siempre espero que les guste 😉

La pyntendo se abarata para la crisis del 2009 ;)

Posted in Python por Arturo Elias Antón en 31 diciembre 2008
Tags: , , , , ,

Para los que no tienen el mágico celular N95 ya pueden mover la pelotita con una linterna. Como muestro en este video donde mi papá me filmo.

El código lo publicare apenas lo tenga mas terminado. Espero que les guste y que vean que tengan un buen 2009

link al video http://www.youtube.com/watch?v=UdMNh9t5YJw

Saludos a todos gracias y feliz año!!!!!!!!!!!!!!!!!!!!!!!!

Un juego para N95 utilizando pyS60. (r2-space)

Acá les dejo un nuevo juego en formatos sis (solo instalable en el teléfono) para aprovechar el acelerómetro de N95 hecho en python (PyS60).
Y por supuesto también les dejo el código para que lo puedan mejorar y comentar.

download sis: http://www.binsd.com.ar/binsdGame/bin/r2_space_v0_0_4.sis

downloas src: http://www.binsd.com.ar/binsdGame/src/r2_space.py

Video para que puedan ver como se juega con el acelerómetro.

http://www.youtube.com/watch?v=tCBZciSpAh0

Definiendo Python como una religion.

Posted in Python por Arturo Elias Antón en 17 diciembre 2008
Tags:

La verdad que me encanto esta definición

Python would be Humanism: It’s simple, unrestrictive, and all you need to follow it is common sense. Many of the followers claim to feel relieved from all the burden imposed by other languages, and that they have rediscovered the joy of programming. There are some who say that it is a form of pseudo-code.

Si quieren ver definiciones de otro lenguajes diríjanse a  http://www.aegisub.net/2008/12/if-programming-languages-were-religions.html

« Página anteriorPágina siguiente »