Capturing a single image from my webcam in Java or Python



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:

  • I do not want to use Processing
  • I do not want to use any language other than those stated above
  • I do want to display this image on my screen in any way, shape or form
  • I do not want to display a live video feed from my webcam on my screen, or save such a feed to my hard drive
  • The Java Media Framework is far too out of date. Do not suggest it.
  • I would rather not use JavaCV, but if I absolutely must, I want to know exactly which files from the OpenCV library I need, and how I can use these files without including the entire library (and preferably without sticking these files in any sort of PATH. Everything should be included in the one directory)
  • I can use Eclipse on the 64-bit Win7 computer if need be, but I also have to be able to compile and use it on 32-bit Linux as well
  • If you think I might or might not know something related to this subject in any way shape or form, please assume I do not know it, and tell me

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.

Answer

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



Source: stackoverflow