Capturar una sola imagen desde mi webcam en Java o Python
Quiero capturar una sola imagen de mi cámara web y guardarla en el disco. Quiero hacer esto en Java o Python (preferiblemente Java). Quiero algo que funcione tanto en Win7 de 64 bits como en Linux de 32 bits.
EDITAR: Uso Python 3.x, no 2.x
Debido a que en cualquier otro lugar donde vea esta pregunta, la gente se las arregla para confundirse, voy a declarar algunas cosas explícitamente:
- No quiero usar Procesamiento
- No quiero usar ningún otro lenguaje que no sean los indicado anteriormente
- quiero mostrar esta imagen en mi pantalla de cualquier manera, forma o forma
- No quiero mostrar una transmisión de video en vivo desde mi cámara web en mi pantalla, o guardar dicha transmisión en mi disco duro
- El Java Media Framework está demasiado desactualizado. No lo sugieras.
- Preferiría no usar JavaCV, pero si es absolutamente necesario, quiero saber exactamente qué archivos de la biblioteca OpenCV necesito, y cómo puedo usar estos archivos sin incluir toda la biblioteca (y preferiblemente sin pegar estos archivos en ningún tipo de RUTA. Todo debe ser incluido en el directorio one)
- Puedo usar Eclipse en la computadora Win7 de 64 bits si es necesario, pero también tengo que ser capaz de compilar y usarlo en Linux de 32 bits
- Si usted piensa que podría o no podría saber algo relacionado con este tema en cualquier forma o forma, por favor asuma que no lo sé, y dígame
EDIT2: Pude conseguir el ejemplo de pygame de Froyo trabajando en Linux usando Python 2.7 y pygame 1.9.1. el pygame.camara.la llamada a camera_list () no funcionó, pero fue innecesaria para el resto del ejemplo. Sin embargo, tuve que llamar a Cam.set_controls() (para lo cual puede encontrar la documentación aquí http://www.pygame.org/docs/ref/camera.html ) para subir el brillo para poder ver realmente cualquier cosa en la imagen que capturé.
Además, necesito llamar a la cámara.get_image() y pygame.imagen.save () métodos tres veces antes de la imagen I supuestamente tomó el primer par de llamadas en realidad se guarda. Parecían estar atrapados en un búfer extraño. Básicamente, en lugar de llamar a Cam.get_image() una vez, tuve que llamar tres veces, cada vez que quería capturar una imagen. Entonces y sólo entonces llamé a Pygame.imagen.guardar().
Desafortunadamente, como se indica a continuación, pygame.camera solo es compatible con Linux. Todavía no tengo una solución para Windows.
4 answers
En Windows es fácil interactuar con tu webcam con pygame:
from VideoCapture import Device
cam = Device()
cam.saveSnapshot('image.jpg')
No he intentado usar pygame en linux (todos mis linux boxen son servidores sin X), pero este enlace podría ser útil http://www.jperla.com/blog/post/capturing-frames-from-a-webcam-on-linux
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-19 05:08:17
@thebjorn ha dado una buena respuesta. Pero si quieres más opciones, puedes probar OpenCV, SimpleCV.
Usando SimpleCV :
from SimpleCV import Image, Camera
cam = Camera()
img = cam.getImage()
img.save("filename.jpg")
Usando OpenCV :
from cv2 import *
# initialize the camera
cam = VideoCapture(0) # 0 -> index of camera
s, img = cam.read()
if s: # frame captured without any errors
namedWindow("cam-test",CV_WINDOW_AUTOSIZE)
imshow("cam-test",img)
waitKey(0)
destroyWindow("cam-test")
imwrite("filename.jpg",img) #save image
Usando pygame :
import pygame
import pygame.camera
pygame.camera.init()
pygame.camera.list_camera() #Camera detected or not
cam = pygame.camera.Camera("/dev/video0",(640,480))
cam.start()
img = cam.get_image()
pygame.image.save(img,"filename.jpg")
Instalar OpenCV:
install python-opencv bindings, numpy
Instalar SimpleCV:
install python-opencv, pygame, numpy, scipy, simplecv
Obtenga la última versión de SimpleCV
Instalar pygame:
install pygame
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-19 05:29:54
Hace algún tiempo escribí simple Webcam Capture API que se puede utilizar para eso. El proyecto está disponible en Github.
Código de ejemplo:
Webcam webcam = Webcam.getDefault();
webcam.open();
try {
ImageIO.write(webcam.getImage(), "PNG", new File("test.png"));
} catch (IOException e) {
e.printStackTRace();
} finally {
webcam.close();
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-21 18:32:04
import cv2
camera = cv2.VideoCapture(0)
while True:
return_value,image = camera.read()
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
cv2.imshow('image',gray)
if cv2.waitKey(1)& 0xFF == ord('s'):
cv2.imwrite('test.jpg',image)
break
camera.release()
cv2.destroyAllWindows()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-01 12:54:29