tags:

views:

492

answers:

4

How can I take snapshots from a webcam in ruby? I know the webcam device is on /dev/video0, but how do I get a picture from it?

A: 

Since you're using Linux, try videodog. It's a small program, which does one thing and does that well: capturing a frame from your /dev/video0 device. From that point you can use any Ruby technique you want to process the JPEG image you got from videodog.

dnet
+2  A: 

I've never actually used it but hornetseye looks good. This question has also already been asked here

Jamie
I've been trying to use hornetseye, but it doesn't seem to fully work.
Malfist
+1  A: 

The Video4Linux API involves sending special ioctls to the /dev/video* device, with data in packed structures; not something easy to do from Ruby. (It's not all that much fun from C, either.)

ruby-v4l is an extension library for capture pictures in Ruby using Video4Linux.

Orphaned in Debian because its maintainer hasn't been active since 2005, so if it doesn't work I don't think you'll be able to get much support.

A more modern solution would probably be to create proper libv4l binding for Ruby. However, I don't know of any present work on that.

ephemient
+1  A: 

Hi, I'm the developer of Hornetseye. You can capture images with the V4L2-interface of HornetsEye as follows.

require 'hornetseye'
include Hornetseye
input = V4L2Input.new '/dev/video0'
img = nil
X11Display.show { img = input.read }
img.save_ubytergb 'test.png'

Currently supported colourspaces are UYVY, YUYV, YUV420, GREY, RGB24. Note that other colourspaces such as MJPEG are not supported at the moment.

wedesoft