Skip to content

Instantly share code, notes, and snippets.

@parzibyte
Last active March 22, 2018 05:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save parzibyte/70f1a25155fce0e8559055f373de88db to your computer and use it in GitHub Desktop.
Save parzibyte/70f1a25155fce0e8559055f373de88db to your computer and use it in GitHub Desktop.
"""
Tomar foto con Python y opencv para después mandarla
a un servidor PHP
@date 20-03-2018
@author parzibyte
@see https://www.parzibyte.me/blog
"""
import cv2
import base64 #Para codificar
#Para hablar HTTP
from urllib.parse import urlencode
from urllib.request import Request, urlopen
"""
En este caso, 0 quiere decir que queremos acceder
a la cámara 0. Si hay más cámaras, puedes ir probando
con 1, 2, 3...
"""
cap = cv2.VideoCapture(0)
leido, frame = cap.read()
if leido == True:
codificado_correctamente, buffer = cv2.imencode('.png', frame)
if codificado_correctamente:
#Nota: .decode sirve para quitar b' al inicio de la cadena
imagen_en_base64 = base64.b64encode(buffer).decode('utf-8')
url = 'http://localhost/fotos_python/foto.php' # Si cambias el servidor o ruta del archivo, cambia la url aquí
datos_enviar = {'foto': imagen_en_base64}
print("Enviando foto...")
peticion = Request(url, urlencode(datos_enviar).encode())
respuesta = urlopen(peticion).read().decode()
print("Guardada con éxito")
else:
print("Error al acceder a la cámara")
"""
Finalmente liberamos o soltamos la cámara
"""
cap.release()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment