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?
Any help would be most welcome.
Cheers, Mike
Hi,
In <45551ebe_5@news.peopletelecom.com.au>
"Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 09:00:08 +0900,
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.
Thanks,
···
Mike Durham <mdurham@people.net.au> wrote:
--
kou
Hi,
In <20061111.125758.14759375.kou@cozmixng.org>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 12:58:41 +0900,
···
Kouhei Sutou <kou@cozmixng.org> wrote:
> 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
I mistook. Gdk::Pixbuf isn't needed.
Data from webcam (String) ->
Cairo::ImageSurface.new(data, format, width, height, stride) ->
Cairo::Context.new(Cairo::XXXSurface.new) ->
context.set_source(image_surface) -> context.paint
Thanks,
--
kou
Kouhei Sutou wrote:
Hi,
In <20061111.125758.14759375.kou@cozmixng.org>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 12:58:41 +0900,
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
I mistook. Gdk::Pixbuf isn't needed.
Data from webcam (String) ->
Cairo::ImageSurface.new(data, format, width, height, stride) ->
Cairo::Context.new(Cairo::XXXSurface.new) ->
context.set_source(image_surface) -> context.paint
Thanks,
--
kou
Thanks for the info kou,
Just a couple of questions to clarify things if you wouldn't mind.
> Cairo::ImageSurface.new(data, format, width, height, stride) ->
is 'data' a Ruby string returned from the V4l?
what is 'format'?
Thanks for your help kou
Mike
···
Kouhei Sutou <kou@cozmixng.org> wrote:
Hi,
In <45557881_4@news.peopletelecom.com.au>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 15:20:04 +0900,
Just a couple of questions to clarify things if you wouldn't mind.
> Cairo::ImageSurface.new(data, format, width, height, stride) ->
is 'data' a Ruby string returned from the V4l?
Yes, it's a String. But I don't know V4l's data format. So,
I can't promise you that you can use V4l's data directory.
what is 'format'?
One of the cairo_format_t:
http://www.cairographics.org/manual/cairo-Image-Surfaces.html#id2598794
In rcairo, those formats are mapped to Cairo::FORMAT_XXX.
Thanks,
···
Mike Durham <mdurham@people.net.au> wrote:
--
kou
Kouhei Sutou wrote:
Hi,
In <45557881_4@news.peopletelecom.com.au>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 15:20:04 +0900,
Just a couple of questions to clarify things if you wouldn't mind.
> Cairo::ImageSurface.new(data, format, width, height, stride) ->
is 'data' a Ruby string returned from the V4l?
Yes, it's a String. But I don't know V4l's data format. So,
I can't promise you that you can use V4l's data directory.
what is 'format'?
One of the cairo_format_t:
Image Surfaces: Cairo: A Vector Graphics Library
In rcairo, those formats are mapped to Cairo::FORMAT_XXX.
Thanks,
--
kou
Thanks a lot kou, you're a star.
Cheers, Mike
···
Mike Durham <mdurham@people.net.au> wrote: