diff --git a/README.md b/README.md index 8671103..8daf799 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,106 @@ -# Misiles -## Información general -Este repositorio contiene el código para el juego de Misiles controlado por la cara usando Facemesh, como fue creado en mi canal de Youtube: -https://youtu.be/_BjL6W71mWY +# **Misiles** +[![example](https://cdn.pixabay.com/photo/2014/09/11/12/45/spacecraft-441708_960_720.jpg)](https://www.ringa-tech.com/) -## Configuración +--- +## **Información general** +Este repositorio contiene el código para el juego de Misiles controlado por la cara usando [Facemesh](https://google.github.io/mediapipe/solutions/face_mesh.html), como fue creado en mi canal de Youtube: +[Ringa-Tech](https://youtu.be/_BjL6W71mWY) + +--- + +## **Información Adicional:** + +Este juego no puede ser ejecutado en terminales de subsistemas Linux. Cómo WSL, WSL2, Termux, entre otros. Debido a que hay problemas con los triggers. +Se puede ejecutar pero es una tarea demasiado complicada. Te comparto está información de [Stackoverflow](https://stackoverflow.com/questions/65939167/problem-using-opencv-in-wsl-when-opening-windows) en caso de que lo quieras intentar. + +--- +## **Configuración** El proyecto lo hice con Python 3.7.9 + +Pero mediaPipe acepta versiones desde 3.6, hasta 3.10. + +
Instalar en WINDOWS: + +### ***Sigue los siguentes pasos:*** + +Revisar versión de Python: +``` +python --version +``` +Crear un ambiente virtual: +``` +python3 -m virtualenv venv +``` +Activar ambiente virtual: +``` +.\venv\Scripts\activate +``` +Actualizar pip: +``` +python.exe -m pip install --upgrade pip +``` Para instalar las dependencias es necesario ejecutar ``` pip install -r requirements.txt ``` -Para ejecutar el juego, ejecutar +
+ +--- + +
Instalar en LINUX: + +### ***Sigue los siguentes pasos:*** + +Revisar versión de Python: +``` +python --version +``` +Crear un ambiente virtual: +``` +python3 -m venv venv +``` +Activar ambiente virtual: +``` +source venv/bin/activate +``` +Actualizar pip: +``` +pip install --upgrade pip +``` +Para instalar las dependencias es necesario ejecutar +``` +pip install -r requirements.txt +``` + +
+ +--- + +## **Para Ejecutar:** + +El siguiente comando para ejecutar el juego: + +**WINDOWS** ``` python .\app.py ``` +**LINUX** +``` +python ./app.py +``` Si no te funciona, prueba usando "python3" o "py" en lugar de "python" en el comando anterior. -## ¿Problemas? -Solo he probado el juego en mi equipo así que seguramente puedes encontrar problemas. +--- -En ese caso por favor levanta un issue aquí en Github, con el mayor detalle que puedas (versión de python, de paquetes, mensaje completo de error, etc). -Si eres ninja y lo solucionas, ¡levanta un Pull Request! +## **¿Problemas?** +En ese caso por favor levanta un [**issue** aquí en Github](), con el mayor detalle que puedas (versión de python, de paquetes, mensaje completo de error, etc). +Si eres ninja y lo solucionas, [¡levanta un Pull Request!](https://github.com/ringa-tech/juego-python-ia-misiles/pulls) + +--- ## Imágenes utilizadas - [Iconos de cohetes creados por Freepik - Flaticon](https://www.flaticon.com/free-icons/rocket) - [Iconos de misiles creados por Freepik - Flaticon](https://www.flaticon.com/free-icons/rocket-launch) - [Fondo creado por Screaming Brain Studios - OpenGameArt](https://opengameart.org/content/seamless-space-backgrounds) + +[![logo-Ringa-tech](https://www.ringa-tech.com/LogotipoV2-Simple.png)](https://www.ringa-tech.com/) diff --git a/webcam.py b/webcam.py index b292fe6..93e07c0 100644 --- a/webcam.py +++ b/webcam.py @@ -1,20 +1,19 @@ from threading import Thread import cv2 -import platform - + class Webcam: def __init__(self): self.stopped = False self.stream = None self.lastFrame = None - self.os_name = platform.system() - + def start(self): t = Thread(target=self.update, args=()) t.daemon = True t.start() return self +# -------------------------DETECCIÓN DE CÁMARA -------------------- # def update(self): if self.stream is None: if self.os_name == "Windows": @@ -23,6 +22,7 @@ def update(self): self.stream = cv2.VideoCapture(0, cv2.CAP_AVFOUNDATION) else: # Linux self.stream = cv2.VideoCapture(0, cv2.CAP_V4L) + while True: if self.stopped: return @@ -45,4 +45,4 @@ def height(self): return self.stream.get(cv2.CAP_PROP_FRAME_HEIGHT ) def ready(self): - return self.lastFrame is not None \ No newline at end of file + return self.lastFrame is not None