Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
99 changes: 89 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
@@ -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.

<details><summary><b>Instalar en WINDOWS:</b></summary>

### ***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
</details>

---

<details><summary><b>Instalar en LINUX:</b></summary>

### ***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
```

</details>

---

## **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/)
10 changes: 5 additions & 5 deletions webcam.py
Original file line number Diff line number Diff line change
@@ -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":
Expand All @@ -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
Expand All @@ -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
return self.lastFrame is not None