Quiero obtener una sola imagen de una cámara (por ejemplo, una cámara web integrada en una computadora portátil) con Python.
Estoy buscando una biblioteca que haga esto posible en unas pocas líneas de código (no estoy buscando escribir un controlador de cámara ni nada por el estilo). La imagen debe estar en algún formato de mapa de bits estándar.
Por favor, también
simplecv
(¿y Pygame
?)En sistemas basados en Debian:
sudo apt-get install python-opencv
import time
from SimpleCV import Camera
cam = Camera()
time.sleep(0.1) # If you don't wait, the image will be dark
img = cam.getImage()
img.save("simplecv.png")
Aunque la situación de iluminación no cambió, la imagen de Python es mucho más oscura. No estoy seguro de por qué ese es el caso.
cv2
(no en PyPI)En sistemas basados en Debian:
sudo apt-get install python-opencv
import time
import cv2
camera_port = 0
camera = cv2.VideoCapture(camera_port)
time.sleep(0.1) # If you don't wait, the image will be dark
return_value, image = camera.read()
cv2.imwrite("opencv.png", image)
del(camera) # so that others can use the camera as soon as possible
cam.stop()
en pygameacabo de modificar el código @Martin Thoma.
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()
para resolver el problema de la pantalla negra. espero que sea de ayuda gracias.
Esta respuesta está parcialmente tomada de https://stackoverflow.com/a/11094891/562769 - ¡gracias Froyo !
Gracias a Phani por ayudarme a mejorarlo.
En sistemas basados en Debian:
sudo apt-get install python-pygame
import pygame
import pygame.camera
import time
pygame.camera.init()
pygame.camera.list_cameras()
cam = pygame.camera.Camera("/dev/video0", (640, 480))
cam.start()
time.sleep(0.1) # You might need something higher in the beginning
img = cam.get_image()
pygame.image.save(img, "pygame.jpg")
cam.stop()
time.sleep(0.1)
aquí también. De lo contrario, las imágenes son oscuras.cam.start()
. Además, para mí 0.1
no es suficiente en mi portátil Dell. 0.5
trabajó para mi.cam = ...
y cam.start()
. Supuse (erróneamente) que tenía que estar allí, porque funcionó después de cambiar eso.ImportError: cannot import name '_camera'
.Instalación
pip install ecapture
Código
from ecapture import ecapture as ec
ec.capture(0,"test","img.jpg")
Cortaría este problema en dos partes.
Espero que utilice un sistema operativo como Linux que tiene una línea de comandos.
AFAIK gphoto2 puede hacer algo como esto
Usar el módulo de subproceso de Python
subprocess.call(['tutambién', 'arg1, ...])
Para resolver el problema de la pantalla negra, deje que la cámara se caliente.
import time
import cv2
camera_port = 0
camera = cv2.VideoCapture(camera_port)
time.sleep(0.1)
return_value, image = camera.read()
cv2.imwrite("opencv.jpg", image)
del(camera) # so that others can use the camera as soon as possible
usuario416
Martín Tomas
Guettli