[PD] using still images with pix_background

Iain Mott mott at reverberant.com
Sat Apr 7 15:55:14 CEST 2012


Thanks a lot Cyrille! - it was a size difference that was causing the
problem.
Cheers,
Iain


On Sat, 2012-04-07 at 14:57 +0200, Cyrille Henry wrote:
> hello,
> 
> i suspect that the image you are using is not the same size or color format than the video stream, so that pix_background can not substract one to the other. resulting in pix_background snapping a new image when switching from pix_image to pix_background.
> 
> so, snapping an image from the camera to feed in pix_image should work as expected...
> 
> cheers
> Cyrille
> 
> 
> Le 07/04/2012 14:29, Iain Mott a écrit :
> > back again:
> >
> > I'm doing another test toggling between a pix_video and a pix_film input
> > to pix_background. Independently, both function well with
> > pix_background, the "reset" message stores an image and all subsequent
> > changes to that image stream are displayed against a black background.
> > If I toggle between the streams with "switch" however, pix_background
> > seems to re-store the 1st frame of the stream after the switch is made.
> >
> > Is there any way around this? ie. can I use the stored image of one
> > stream (live video for example) in the background removal of another
> > (eg. mpeg playback)?
> >
> > The still image issue is another problem... Because ultimately, I wish
> > to use a still image (pix_image) in the background removal of pix_video.
> >
> > Hope someone is out there this easter - i'm stuck!
> >
> > Cheers,
> >
> > Iain
> >
> >
> > On Fri, 2012-04-06 at 10:50 -0300, Iain Mott wrote:
> >> pix_background's lack of response to the still image was a gemhead
> >> numbering issue i think. The new file attached does store the
> >> still-image in pix_background.
> >>
> >> I should explain that the image I'm using is a tif photo taken from a
> >> webcam with no one sitting in front. When testing the live video - i'm
> >> sitting in front of the camera and the aim is to remove the background.
> >>
> >> In the attached file i'm using the following sequence:
> >>
> >> 1. Choose the camera/input device number
> >> 2. load a still image
> >> 3. Display the still image in the open Gem window
> >> 4. Store the image in pix_background with "reset" message
> >> 5. Remove background (screen goes blank as it should)
> >> 6. Display the live video
> >>
> >> As i mentioned while testing the live video I am sitting in front of the
> >> camera against the same background of the still image. What I can't
> >> understand is why isn't the background of this removed? What seems to
> >> happen is that the first frame of the live video is stored when I switch
> >> the input of pix_background to the live feed (step 6) - the previous
> >> stored version of the still image seems to be deleted when the switch is
> >> made.
> >>
> >> How can I remove the background?
> >>
> >> Thanks,
> >>
> >> Iain
> >>
> >>
> >> #N canvas 546 84 872 614 10;
> >> #X obj 62 237 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
> >> 0;
> >> #N canvas 1 58 450 300 gemwin 0;
> >> #X obj 132 136 gemwin;
> >> #X obj 67 89 outlet;
> >> #X obj 67 10 inlet;
> >> #X obj 67 41 route create;
> >> #X msg 67 70 set destroy;
> >> #X msg 142 68 set create;
> >> #X msg 132 112 create \, 1;
> >> #X msg 198 112 destroy;
> >> #X obj 189 -61 loadbang;
> >> #X msg 188 -38 create;
> >> #X connect 2 0 3 0;
> >> #X connect 3 0 4 0;
> >> #X connect 3 0 6 0;
> >> #X connect 3 1 5 0;
> >> #X connect 3 1 7 0;
> >> #X connect 4 0 1 0;
> >> #X connect 5 0 1 0;
> >> #X connect 6 0 0 0;
> >> #X connect 7 0 0 0;
> >> #X connect 8 0 9 0;
> >> #X connect 9 0 3 0;
> >> #X restore 67 277 pd gemwin;
> >> #X msg 67 257 destroy;
> >> #X obj 451 233 pix_texture;
> >> #X obj 451 255 square 3;
> >> #X msg 402 165 reset;
> >> #X text 598 188 threshold;
> >> #X obj 451 207 pix_background;
> >> #X msg 577 173 \$1 \$1 \$1;
> >> #X msg 574 101 0.5;
> >> #X floatatom 577 157 5 0 0 0 - - -;
> >> #X obj 407 74 pix_video;
> >> #X obj 206 171 switch 2;
> >> #X msg 149 36 1;
> >> #X msg 302 67 2;
> >> #X msg 640 119 0;
> >> #X obj 174 94 t f b b;
> >> #X msg 66 -64 device 1;
> >> #N canvas 166 121 570 420 device 0;
> >> #X obj 204 60 cnv 20 20 20 empty \$0-open-canvas 1 4 10 0 16 -233017
> >> -1 0;
> >> #X obj 60 61 hradio 18 1 0 8 empty empty empty 0 -6 0 8 -225271 -1
> >> -1 1;
> >> #X obj 60 13 inlet;
> >> #X msg 160 254 label \$1;
> >> #X obj 160 232 makefilename %d;
> >> #X obj 60 108 int;
> >> #X obj 60 337 outlet;
> >> #X obj 160 277 send \$0-open-canvas;
> >> #X msg 130 170 device \$1;
> >> #X obj 60 130 t b f;
> >> #X obj 130 192 t a a;
> >> #X obj 130 298 list prepend set;
> >> #X obj 130 320 list trim;
> >> #X obj 160 211 route device;
> >> #X obj 130 116 loadbang;
> >> #X msg 130 138 0;
> >> #X connect 1 0 5 0;
> >> #X connect 2 0 1 0;
> >> #X connect 3 0 7 0;
> >> #X connect 4 0 3 0;
> >> #X connect 5 0 9 0;
> >> #X connect 8 0 10 0;
> >> #X connect 9 0 6 0;
> >> #X connect 9 1 8 0;
> >> #X connect 10 0 11 0;
> >> #X connect 10 1 13 0;
> >> #X connect 11 0 12 0;
> >> #X connect 12 0 6 0;
> >> #X connect 13 0 4 0;
> >> #X connect 14 0 15 0;
> >> #X connect 15 0 8 0;
> >> #X coords 0 -1 1 1 165 20 1 60 60;
> >> #X restore 66 -88 pd device;
> >> #X obj 279 2 loadbang;
> >> #X text 72 -109 1 Select camera/device;
> >> #X text 63 236 comment;
> >> #X text 136 17 3 Display still image;
> >> #X obj 41 2 bng 15 250 50 0 empty empty empty 20 8 0 8 -262144 -1 -1
> >> ;
> >> #N canvas 0 0 587 366 image 0;
> >> #X obj 77 48 inlet;
> >> #X obj 77 344 outlet;
> >> #X obj 77 205 pix_image ../../doc/gem/examples/data/fractal.JPG;
> >> #X obj 223 55 inlet;
> >> #X msg 223 123 open \$1;
> >> #X obj 223 100 openpanel;
> >> #X obj 77 281 pix_buf;
> >> #X msg 103 257 auto 1;
> >> #X obj 103 236 loadbang;
> >> #X text 156 263 [pix_buf] with auto 1 is important if we want to
> >> recalculate
> >> our pix-effect each frame but don't want to reload the image all the
> >> time.;
> >> #X connect 0 0 2 0;
> >> #X connect 2 0 6 0;
> >> #X connect 3 0 5 0;
> >> #X connect 4 0 2 0;
> >> #X connect 5 0 4 0;
> >> #X connect 6 0 1 0;
> >> #X connect 7 0 6 0;
> >> #X connect 8 0 7 0;
> >> #X restore -38 32 pd image;
> >> #X obj 406 -41 gemhead 66;
> >> #X obj -38 3 gemhead 1;
> >> #X text 371 147 4 Store image in pix_background;
> >> #X text 572 79 5 Remove background;
> >> #X text 310 46 6 Display video stream;
> >> #X text 37 -20 2 Load still image;
> >> #X connect 1 0 2 0;
> >> #X connect 2 0 1 0;
> >> #X connect 3 0 4 0;
> >> #X connect 5 0 7 0;
> >> #X connect 7 0 3 0;
> >> #X connect 8 0 7 1;
> >> #X connect 9 0 10 0;
> >> #X connect 10 0 8 0;
> >> #X connect 11 0 12 2;
> >> #X connect 12 0 7 0;
> >> #X connect 13 0 16 0;
> >> #X connect 14 0 12 0;
> >> #X connect 15 0 7 1;
> >> #X connect 16 0 12 0;
> >> #X connect 17 0 11 0;
> >> #X connect 18 0 17 0;
> >> #X connect 19 0 14 0;
> >> #X connect 23 0 24 1;
> >> #X connect 24 0 12 1;
> >> #X connect 25 0 11 0;
> >> #X connect 26 0 24 0;
> >>
> >>
> >>
> >>
> >> On Fri, 2012-04-06 at 08:17 -0300, Iain Mott wrote:
> >>> Following Max's advice on using an image (i'm using a tif file) stored
> >>> on disk to "reset" pix_background - i'm having difficulty getting
> >>> pix_background to respond to the still image.
> >>>
> >>> I've created an example in the attached file - which involves the
> >>> following steps (please see the numbered comments in the patch):
> >>>
> >>> 1. Choose the camera/input device number
> >>> 2. load a still image
> >>> 3. Display the still image in the open Gem window
> >>> 4. Store the image (attempt to) in pix_background with "reset" message
> >>> (if you attempt to remove background now, nothing happens)
> >>> 5. Display video stream in Gem window
> >>> 6. Remove background
> >>>
> >>> The result is that the still image appears not to have been stored. What
> >>> is stored is the first moment (frame?) of the live video, when it is
> >>> first displayed in step 5.
> >>>
> >>> It seems like pix_background doesn't respond to still images. Do you
> >>> need to convert the pix_image output to some sort of "video stream"? If
> >>> so, how is done?
> >>>
> >>> Will paste the patch below in case the attachment doesn't arrive.
> >>>
> >>> Thanks - happy Easter!
> >>>
> >>> Iain
> >>>
> >>>
> >>>
> >>> #N canvas 541 183 872 614 10;
> >>> #X obj 62 237 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
> >>> 0;
> >>> #N canvas 1 58 450 300 gemwin 0;
> >>> #X obj 132 136 gemwin;
> >>> #X obj 67 89 outlet;
> >>> #X obj 67 10 inlet;
> >>> #X obj 67 41 route create;
> >>> #X msg 67 70 set destroy;
> >>> #X msg 142 68 set create;
> >>> #X msg 132 112 create \, 1;
> >>> #X msg 198 112 destroy;
> >>> #X obj 189 -61 loadbang;
> >>> #X msg 188 -38 create;
> >>> #X connect 2 0 3 0;
> >>> #X connect 3 0 4 0;
> >>> #X connect 3 0 6 0;
> >>> #X connect 3 1 5 0;
> >>> #X connect 3 1 7 0;
> >>> #X connect 4 0 1 0;
> >>> #X connect 5 0 1 0;
> >>> #X connect 6 0 0 0;
> >>> #X connect 7 0 0 0;
> >>> #X connect 8 0 9 0;
> >>> #X connect 9 0 3 0;
> >>> #X restore 67 277 pd gemwin;
> >>> #X msg 67 257 destroy;
> >>> #X obj 451 233 pix_texture;
> >>> #X obj 451 255 square 3;
> >>> #X msg 402 165 reset;
> >>> #X text 598 188 threshold;
> >>> #X obj 451 207 pix_background;
> >>> #X msg 577 173 \$1 \$1 \$1;
> >>> #X msg 574 101 0.5;
> >>> #X floatatom 577 157 5 0 0 0 - - -;
> >>> #X obj 395 86 pix_video;
> >>> #X obj 201 165 switch 2;
> >>> #X msg 149 36 1;
> >>> #X msg 302 67 2;
> >>> #X msg 640 133 0;
> >>> #X obj 360 -93 gemhead 261;
> >>> #X obj 174 94 t f b b;
> >>> #X obj 38 27 pix_image;
> >>> #X obj 304 -104 gemhead;
> >>> #X obj 7 -115 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
> >>> -1;
> >>> #N canvas 0 0 450 300 openpanel 0;
> >>> #X obj 114 62 inlet;
> >>> #X obj 121 254 outlet;
> >>> #X obj 114 125 openpanel;
> >>> #X msg 114 162 set open \$1;
> >>> #X obj 114 199 t b a;
> >>> #X connect 0 0 2 0;
> >>> #X connect 2 0 3 0;
> >>> #X connect 3 0 4 0;
> >>> #X connect 4 0 1 0;
> >>> #X connect 4 1 1 0;
> >>> #X restore 7 -94 pd openpanel;
> >>> #X msg 6 -66
> >>> open /home/iain/projects/espelho/pd/background_stills/teste_low00000.tif
> >>> ;
> >>> #X msg 557 -52 device 1;
> >>> #N canvas 166 121 570 420 device 0;
> >>> #X obj 204 60 cnv 20 20 20 empty \$0-open-canvas 1 4 10 0 16 -233017
> >>> -1 0;
> >>> #X obj 60 61 hradio 18 1 0 8 empty empty empty 0 -6 0 8 -225271 -1
> >>> -1 1;
> >>> #X obj 60 13 inlet;
> >>> #X msg 160 254 label \$1;
> >>> #X obj 160 232 makefilename %d;
> >>> #X obj 60 108 int;
> >>> #X obj 60 337 outlet;
> >>> #X obj 160 277 send \$0-open-canvas;
> >>> #X msg 130 170 device \$1;
> >>> #X obj 60 130 t b f;
> >>> #X obj 130 192 t a a;
> >>> #X obj 130 298 list prepend set;
> >>> #X obj 130 320 list trim;
> >>> #X obj 160 211 route device;
> >>> #X obj 130 116 loadbang;
> >>> #X msg 130 138 0;
> >>> #X connect 1 0 5 0;
> >>> #X connect 2 0 1 0;
> >>> #X connect 3 0 7 0;
> >>> #X connect 4 0 3 0;
> >>> #X connect 5 0 9 0;
> >>> #X connect 8 0 10 0;
> >>> #X connect 9 0 6 0;
> >>> #X connect 9 1 8 0;
> >>> #X connect 10 0 11 0;
> >>> #X connect 10 1 13 0;
> >>> #X connect 11 0 12 0;
> >>> #X connect 12 0 6 0;
> >>> #X connect 13 0 4 0;
> >>> #X connect 14 0 15 0;
> >>> #X connect 15 0 8 0;
> >>> #X coords 0 -1 1 1 165 20 1 60 60;
> >>> #X restore 557 -76 pd device;
> >>> #X text 371 147 4 Store image in pix_background;
> >>> #X obj 279 2 loadbang;
> >>> #X text 28 -115 2 Load still image;
> >>> #X text 556 74 6 Remove background;
> >>> #X text 563 -97 1 Select camera/device;
> >>> #X text 63 236 comment;
> >>> #X text 136 17 3 Display still image;
> >>> #X text 302 44 5 Display video stream;
> >>> #X connect 1 0 2 0;
> >>> #X connect 2 0 1 0;
> >>> #X connect 3 0 4 0;
> >>> #X connect 5 0 7 0;
> >>> #X connect 7 0 3 0;
> >>> #X connect 8 0 7 1;
> >>> #X connect 9 0 10 0;
> >>> #X connect 10 0 8 0;
> >>> #X connect 11 0 12 2;
> >>> #X connect 12 0 7 0;
> >>> #X connect 13 0 17 0;
> >>> #X connect 14 0 12 0;
> >>> #X connect 15 0 7 1;
> >>> #X connect 17 0 12 0;
> >>> #X connect 17 1 22 0;
> >>> #X connect 17 2 15 0;
> >>> #X connect 18 0 12 1;
> >>> #X connect 19 0 11 0;
> >>> #X connect 19 0 18 0;
> >>> #X connect 20 0 21 0;
> >>> #X connect 21 0 22 0;
> >>> #X connect 22 0 18 0;
> >>> #X connect 23 0 11 0;
> >>> #X connect 24 0 23 0;
> >>> #X connect 26 0 14 0;
> >>>
> >>>
> >>> _______________________________________________
> >>> Pd-list at iem.at mailing list
> >>> UNSUBSCRIBE and account-management ->  http://lists.puredata.info/listinfo/pd-list
> >>
> >> _______________________________________________
> >> Pd-list at iem.at mailing list
> >> UNSUBSCRIBE and account-management ->  http://lists.puredata.info/listinfo/pd-list
> >
> >
> >
> > _______________________________________________
> > Pd-list at iem.at mailing list
> > UNSUBSCRIBE and account-management ->  http://lists.puredata.info/listinfo/pd-list
> >





More information about the Pd-list mailing list