Linux Cairo, webcam displaying images

M

Mike Durham

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
 
K

Kouhei Sutou

Hi,

In <[email protected]>
"Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 09:00:08 +0900,
Mike Durham said:
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,
 
K

Kouhei Sutou

Hi,

In <[email protected]>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 12:58:41 +0900,
Kouhei Sutou said:
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,
 
M

Mike Durham

Kouhei said:
Hi,

In <[email protected]>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 12:58:41 +0900,


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,
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
 
K

Kouhei Sutou

Hi,

In <[email protected]>
"Re: Linux Cairo, webcam displaying images" on Sat, 11 Nov 2006 15:20:04 +0900,
Mike Durham said:
Just a couple of questions to clarify things if you wouldn't mind.


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,
 
M

Mike Durham

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,578
Members
45,052
Latest member
LucyCarper

Latest Threads

Top