Mostrando entradas con la etiqueta crear. Mostrar todas las entradas
Mostrando entradas con la etiqueta crear. Mostrar todas las entradas

martes, 6 de marzo de 2018

Pygame I: Las bases.

Vamos a empezar esta serie de tutoriales sobre Pygame, como ya introduje la semana pasada, no pretendo hacer una guia completa de creación de videojuegos, simplemente vamos a presentar unas bases para que podamos integrar las cosas que hemos aprendido con OpenCV a Pygame, y así poder programar juegos al estilo Eye Toy de Play Station 2.

En este primer tutorial, mostraré la configuración inicial del juego, cargaremos musica y un sprite, con esto será suficiente para poder entender como  funciona pygame.

Para descargar pygame, usaremos la herramienta pip, de la que ya hemos hablado anteriormente:

Windows, en CMD: python -m pip install pygame
Linux, en la terminal: pip install pygame

Documentación de Pygame, https://www.pygame.org/docs/ref/display.html
El sprite utilizado:



Sin más y como siempre, pasamos al codigo, sobre el mismo código pondré los comentarios, creo que os resultará más práctico:


'''
Created on 2 mar. 2018

@author: Juanp
'''

import pygame
from pygame.locals import *

#Constantes

W = 680
H = 460

AZUL_CLARO = (190,220,255)


def main():
    
    #Iniciamos pygame:
    
    pygame.init()
    pygame.font.init()
    pygame.mixer.init(frequency=22050, size=16, channels=2, buffer=4096)
    clock = pygame.time.Clock()
    SCREEN = pygame.display.set_mode((W,H))
    
    #La funcion fill, nos sirve para definir el color de fondo
    
    SCREEN.fill(AZUL_CLARO)
        
    #Cargamos los archivos de juego y definimos variables
    
    sprite = pygame.image.load('globo.png').convert_alpha()
    mus_fondo = pygame.mixer_music.load("loopvint.mp3") #Importante diferenciar entre musica y sonido del juego
    pygame.mixer.music.play(loops=0, start=0.0)        
    
    running = True
    
    #Bucle del juego
    
    while running:
        
        #Mostramos el sprite en pantalla
        
        SCREEN.blit(sprite,(W/2,H/2))
                  
          
        
    
        #Eventos de juego, por el momento solo cerramos la aplicacion usando la ventana
        for event in pygame.event.get():

            if event.type == pygame.QUIT:
                running = False
                
    
        #Actualiza pantalla    
        pygame.display.update()            

main()


La pantalla deberia mostrar algo así:

jueves, 11 de diciembre de 2014

OpenCV y Python IV (Entrenamiento HAAR cascade)

En el anterior tutorial aprendimos a utilizar los clasificadores HAAR, usando los que trae por defecto OpenCV, ahora pasamos a algo más interesante, "entrenar" al software a reconocer los objetos que queremos.
Ya dije que hay diferentes tipos de procedimientos para localizar objetos, depende siempre de lo que queramos detectar.

OpenCV tiene dos herramientas para generar el archivo *.xml que necesitamos, las encontrareis en "OpenCV/Build/Common/x86" que es la carpeta donde trabajaremos por comodidad, los programas que usaremos son "opencv_createsamples" y "opencv_traincascade"

El procedimiento es el siguiente:

  • Creamos tres carpetas, en una pondremos las imágenes negativas ( las que no pertenecen a nuestro objeto), en otra las positivas (por eliminación, las que si) y en la ultima ira a parar el archivo *.xml, la llamaremos "cascade".
  • Creamos un archivo de texto, llamado "negative.txt" y en el insertamos las rutas de las imágenes negativas:
    neg/neg_img1.jpg
    neg/neg_img2.jpg
    ...
  • Creamos otro archivo de texto, llamado "positive.txt" y en este hacemos lo mismo, pero indicando los siguientes argumentos: "ruta del archivo" "numero de veces que sale el objeto en esa imagen" "posicion x de la esquina superior izquierda" "posición y de la esquina superior izquierda" "alto del recuadro" ancho del recuadro":
    pos/pos_img1.jpg 1 675 210 400 150





  • Una vez tengamos los archivos listos, cuantas más imagenes mejor funcionará, pasaremos a crear el primer archivo necesario. Para ello nos vamos a la consola y navegamos hasta la ruta de las herramientas, e introducimos:
    opencv_createsamples.exe -vec bin_desc.vec -info positive.txt -bg negative.txt
    Con esto generamos el archivo "bin_desc.vec", que es el que utilizamos para el próximo paso.
  • Aún dentro de la consola, introducimos:
    opencv_traincascade.exe -data cascade -vec bin_desc -bg negative.txt
  • Dentro de la carpeta "cascade" se generan unos cuantos archivos, de ahi solo nos interesa "cascade.xml" que es nuestro clasificador, para probarlo simplemente usaremos el ejemplo del post anterior, en el que cambiaremos el archivo de caras, por el nuestro.