I want to capture a single image from my webcam and save it to disk. I want to do this in Java or Python (preferably Java). I want something that will work on both 64-bit Win7 and 32-bit Linux.
EDIT: I use Python 3.x, not 2.x
Because everywhere else I see this question asked people manage to get confused, I'm going to state a few things explicitly:
EDIT2: I was able to get Froyo's pygame example working on Linux using Python 2.7 and pygame 1.9.1. the pygame.camera.camera_list() call didn't work, but it was unnecessary for the rest of the example. However, I had to call cam.set_controls() (for which you can find the documentation here http://www.pygame.org/docs/ref/camera.html) to up the brightness so I could actually see anything in the image I captured.
Also, I need to call the cam.get_image() and pygame.image.save() methods three times before the image I supposedly took on the first pair of calls actually gets saved. They appeared to be stuck in a weird buffer. Basically, instead of calling cam.get_image() once, I had to call it three times every single time I wanted to capture an image. Then and only then did I call pygame.image.save().
Unfortunately, as stated below, pygame.camera is only supported on Linux. I still don't have a solution for Windows.
In OpenCV, we use two functions for Perspective transformation getPerspectiveTransform() and then warpPerspective().
@thebjorn has given a good answer. But if you want more options, you can try OpenCV, SimpleCV.
using SimpleCV (not supported in python3.x):
from SimpleCV import Image, Camera cam = Camera() img = cam.getImage() img.save("filename.jpg")
using 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
using pygame:
import pygame import pygame.camera pygame.camera.init() pygame.camera.list_cameras() #Camera detected or not cam = pygame.camera.Camera("/dev/video0",(640,480)) cam.start() img = cam.get_image() pygame.image.save(img,"filename.jpg")
Install OpenCV:
install python-opencv bindings, numpy
Install SimpleCV:
install python-opencv, pygame, numpy, scipy, simplecv
get latest version of SimpleCV
Install pygame:
install pygame
On windows it is easy to interact with your webcam with pygame:
from VideoCapture import Device cam = Device() cam.saveSnapshot('image.jpg')
I haven't tried using pygame on linux (all my linux boxen are servers without X), but this link might be helpful http://www.jperla.com/blog/post/capturing-frames-from-a-webcam-on-linux
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With