with videocapture picture imagen from desde capturar camara java python webcam image-capture javacv

videocapture - Capturando una sola imagen de mi cámara web en Java o Python



take a picture with webcam python (4)

@thebjorn ha dado una buena respuesta. Pero si quieres más opciones, puedes probar OpenCV, SimpleCV.

utilizando SimpleCV :

from SimpleCV import Image, Camera cam = Camera() img = cam.getImage() img.save("filename.jpg")

utilizando 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")

Instala OpenCV :

install python-opencv bindings, numpy

Instala SimpleCV :

install python-opencv, pygame, numpy, scipy, simplecv

Obtén la última versión de SimpleCV

Instala pygame :

install pygame

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

Porque en todas partes veo que la pregunta que se hace la gente se confunde, voy a decir algunas cosas explícitamente:

  • No quiero usar Procesamiento
  • No quiero utilizar ningún otro idioma que no sea el indicado anteriormente.
  • Quiero mostrar esta imagen en mi pantalla de cualquier forma, forma o forma.
  • No quiero mostrar un video en vivo desde mi cámara web en mi pantalla, o guardar ese video 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 de OpenCV necesito y cómo puedo usar estos archivos sin incluir la biblioteca completa (y preferiblemente sin pegar estos archivos en ningún tipo de archivo). PATH. Todo debe estar incluido en el directorio.
  • Puedo usar Eclipse en la computadora Win7 de 64 bits si es necesario, pero también tengo que poder compilarlo y usarlo en Linux de 32 bits.
  • Si crees que puedo o no saber algo relacionado con este tema en alguna forma o forma, por favor asume que no lo sé y dímelo.

EDIT2: Pude obtener el ejemplo de Froyo pygame trabajando en Linux usando Python 2.7 y pygame 1.9.1. La llamada pygame.camera.camera_list () no funcionó, pero no fue necesaria 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 aumentar el brillo y poder ver cualquier cosa en el Imagen que capturé.

Además, necesito llamar a los métodos cam.get_image () y pygame.image.save () tres veces antes de que la imagen que supuestamente tomé en el primer par de llamadas en realidad se guarde. 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 solo entonces llamé a pygame.image.save ().

Desafortunadamente, como se indica a continuación, pygame.camera solo es compatible con Linux. Todavía no tengo una solución para Windows.



Hace algún tiempo escribí una simple API de captura de cámara web que puede usarse 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(); }


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()