G’day
Can anyone please advise me on how to constantly display the output from
a webcam using Ruby & Cairo?
I can operate the webcam, write images to disk etc and I can display a
Gdk::Pixbuf okay. It’s just the updating of an image on the screen that
I’m missing.
The data returned from V4l is a ruby ‘string’ but how do I display it?
At first I thought to display a blank Gdk::Pixbuf of correct size
(640x480) and constantly modify it’s buffer but I think this might not
be possible from within Ruby???
====
From the Ruby-Gnome2 site it says:
Gdk::Pixbuf.new(colorspace, has_alpha, bits_per_sample, width, height)
Creates a new Gdk::Pixbuf and allocates a buffer for it. The buffer
has an optimal rowstride. Note that the buffer is not cleared; you will
have to fill it completely yourself. Raises an…
note “you will have to fill it completely yourself” how is this achieved
in Ruby?
Can anyone please advise me on how to constantly display the output from
a webcam using Ruby & Cairo?
Data from webcam (String) → Gdk::Pixbuf →
Cairo::ImageSurface.new(data, format, width, height, stride) →
Cairo::Context.new(Cairo::XXXSurface.new) →
context.set_source(image_surface) → context.paint
The data returned from V4l is a ruby ‘string’ but how do I display it?
At first I thought to display a blank Gdk::Pixbuf of correct size
(640x480) and constantly modify it’s buffer but I think this might not
be possible from within Ruby???
Use Gdk::Pixbuf.new(data, colorspace, has_alpha, bit_per_sample,
width, height, rowstride):
Creates a new Gdk::Pixbuf out of in-memory image
data. Currently only RGB images with 8 bits per sample
are supported. Raises an Gdk::PixbufError if there was
not enough memory.
* data: Image data in 8-bit/sample packed format(String).
* colorspace: Color space(GdkColorspace) for image data.
* has_alpha: true if the data has an opacity channel or false.
* bits_per_sample: Number of bits per color sample.
* width: Width of image in pixels.
* height: Height of image in pixels.
* rowstride: Distance in bytes between row starts.
* Returns: A newly-created Gdk::Pixbuf.