aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorN.N. <sevyves@users.sourceforge.net>2009-06-01 19:32:26 +0000
committerN.N. <sevyves@users.sourceforge.net>2009-06-01 19:32:26 +0000
commit9ba3548adf6df82ce6569949e33983c97ecaa098 (patch)
tree3cc9ec3a168318e87a874cba92eca0d090059c04
parentc320c52c57d9d40d04b9a5ae46e954104348c152 (diff)
fixed help patches
svn path=/trunk/externals/pdp_opencv/; revision=11611
-rw-r--r--pdp_opencv_edge-help.pd93
-rw-r--r--pdp_opencv_floodfill-help.pd86
-rw-r--r--pdp_opencv_haarcascade-help.pd100
-rw-r--r--pdp_opencv_histo-help.pd103
-rw-r--r--pdp_opencv_histo.c129
-rw-r--r--pdp_opencv_laplace-help.pd103
-rw-r--r--pdp_opencv_laplace.c48
-rw-r--r--pdp_opencv_lk-help.pd226
-rw-r--r--pdp_opencv_morphology-help.pd140
-rw-r--r--pdp_opencv_morphology.c26
-rw-r--r--pdp_opencv_motempl-help.pd268
-rw-r--r--pdp_opencv_motempl.c2
-rw-r--r--pdp_opencv_threshold-help.pd108
-rw-r--r--pdp_opencv_threshold.c35
14 files changed, 860 insertions, 607 deletions
diff --git a/pdp_opencv_edge-help.pd b/pdp_opencv_edge-help.pd
index 0ee2618..efee274 100644
--- a/pdp_opencv_edge-help.pd
+++ b/pdp_opencv_edge-help.pd
@@ -1,30 +1,65 @@
-#N canvas 0 0 521 599 10;
-#X obj 101 158 pdp_xv;
-#X obj 101 57 pdp_qt;
-#X obj 134 -7 metro 40;
-#X msg 134 -35 bang;
-#X msg 175 -35 stop;
-#X obj 101 -163 openpanel;
-#X msg 101 -138 open \$1;
-#X msg 101 -191 bang;
-#X msg 135 20 loop \$1;
-#X obj 215 20 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#N canvas 534 143 786 603 10;
+#X obj -195 -148 cnv 15 621 250 empty empty empty 20 12 0 14 -260097
+-66577 0;
+#X obj 45 -108 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#X floatatom 233 98 5 0 0 0 - - -;
-#X obj 101 99 pdp_opencv_edge;
-#X text 272 99 edge threshold;
-#X obj 215 -62 loadbang;
-#X text 170 -196 1 first load a video file;
-#X connect 1 0 11 0;
-#X connect 2 0 1 0;
-#X connect 3 0 2 0;
-#X connect 4 0 2 0;
-#X connect 5 0 6 0;
-#X connect 6 0 1 0;
-#X connect 7 0 5 0;
-#X connect 8 0 1 0;
-#X connect 9 0 8 0;
-#X connect 10 0 11 1;
-#X connect 11 0 0 0;
-#X connect 13 0 9 0;
-#X connect 13 0 3 0;
+#X obj 45 -81 metro 40;
+#X msg 135 -54 close;
+#X obj 65 17 pdp_v4l;
+#X msg 122 -86 open /dev/video0;
+#X obj 246 -106 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
+1 1;
+#X obj 246 -79 metro 40;
+#X msg 327 -60 close;
+#X msg 323 -84 open /dev/video0;
+#X obj 266 19 pdp_v4l2;
+#X msg 332 -5 format \$1;
+#X obj 333 -27 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj -165 67 pdp_qt;
+#X obj -132 3 metro 40;
+#X msg -132 -25 bang;
+#X msg -91 -25 stop;
+#X obj -165 -94 openpanel;
+#X msg -165 -69 open \$1;
+#X msg -165 -122 bang;
+#X msg -131 30 loop \$1;
+#X obj -51 30 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj -51 -52 loadbang;
+#X text -122 -119 playing a video file;
+#X text 75 -110 Camera input;
+#X text -197 -169 written by lluis gomez i bigorda ( lluisgomez@hangar.org
+);
+#X text -196 -185 pdp_opencv_edge : edge detection filter;
+#X obj -194 110 cnv 15 621 150 empty empty empty 20 12 0 14 -258113
+-66577 0;
+#X obj -169 199 pdp_xv;
+#X floatatom -52 121 5 0 0 0 - - -;
+#X obj -169 156 pdp_opencv_edge;
+#X text -13 122 edge threshold;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 30 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 30 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 30 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 17 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 22 0 15 0;
+#X connect 29 0 30 1;
+#X connect 30 0 28 0;
diff --git a/pdp_opencv_floodfill-help.pd b/pdp_opencv_floodfill-help.pd
index abc21df..31ddbb3 100644
--- a/pdp_opencv_floodfill-help.pd
+++ b/pdp_opencv_floodfill-help.pd
@@ -1,8 +1,6 @@
#N canvas 395 148 826 623 10;
#X text -158 -39 used in tracking algorithms as an object selector
;
-#X text -158 -26 Written by Lluis Gomez i Bigorda ( lluis@artefacte.org
-);
#X text -158 -12 and Yves Degoyon ( ydegoyon@gmail.com );
#X text -159 -62 pdp_opencv_floodfill : mark image components with
a specific color;
@@ -14,7 +12,7 @@ a specific color;
#X msg 164 112 close;
#X obj 94 183 pdp_v4l;
#X msg 151 80 open /dev/video0;
-#X obj 275 60 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#X obj 275 60 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 275 87 metro 40;
#X msg 356 106 close;
@@ -76,47 +74,49 @@ you want to mark;
#X text 168 405 set connectivity ( default 4 );
#X text 129 463 lower tolerance ( default 20 );
#X text 135 483 upper tolerance ( default 20 );
-#X connect 5 0 6 0;
-#X connect 6 0 8 0;
-#X connect 7 0 8 0;
-#X connect 8 0 31 0;
-#X connect 9 0 8 0;
-#X connect 10 0 11 0;
-#X connect 11 0 14 0;
-#X connect 12 0 14 0;
-#X connect 13 0 14 0;
-#X connect 14 0 31 0;
+#X text -158 -26 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X connect 4 0 5 0;
+#X connect 5 0 7 0;
+#X connect 6 0 7 0;
+#X connect 7 0 30 0;
+#X connect 8 0 7 0;
+#X connect 9 0 10 0;
+#X connect 10 0 13 0;
+#X connect 11 0 13 0;
+#X connect 12 0 13 0;
+#X connect 13 0 30 0;
+#X connect 14 0 13 0;
#X connect 15 0 14 0;
-#X connect 16 0 15 0;
-#X connect 17 0 31 0;
+#X connect 16 0 30 0;
+#X connect 17 0 16 0;
#X connect 18 0 17 0;
-#X connect 19 0 18 0;
-#X connect 20 0 18 0;
-#X connect 21 0 22 0;
-#X connect 22 0 17 0;
-#X connect 23 0 21 0;
-#X connect 24 0 17 0;
+#X connect 19 0 17 0;
+#X connect 20 0 21 0;
+#X connect 21 0 16 0;
+#X connect 22 0 20 0;
+#X connect 23 0 16 0;
+#X connect 24 0 23 0;
#X connect 25 0 24 0;
-#X connect 26 0 25 0;
-#X connect 26 0 19 0;
-#X connect 30 0 35 0;
-#X connect 31 0 30 0;
-#X connect 31 0 39 0;
-#X connect 31 1 46 0;
-#X connect 32 0 31 1;
-#X connect 33 0 31 2;
-#X connect 34 0 31 0;
-#X connect 35 0 34 0;
-#X connect 36 0 31 0;
-#X connect 37 0 36 0;
+#X connect 25 0 18 0;
+#X connect 29 0 34 0;
+#X connect 30 0 29 0;
+#X connect 30 0 38 0;
+#X connect 30 1 45 0;
+#X connect 31 0 30 1;
+#X connect 32 0 30 2;
+#X connect 33 0 30 0;
+#X connect 34 0 33 0;
+#X connect 35 0 30 0;
+#X connect 36 0 35 0;
+#X connect 38 0 29 0;
#X connect 39 0 30 0;
-#X connect 40 0 31 0;
-#X connect 46 0 51 0;
-#X connect 51 0 47 0;
-#X connect 51 1 48 0;
-#X connect 51 2 49 0;
-#X connect 51 3 50 0;
-#X connect 56 0 31 0;
-#X connect 57 0 31 0;
-#X connect 61 0 31 0;
-#X connect 62 0 31 0;
+#X connect 45 0 50 0;
+#X connect 50 0 46 0;
+#X connect 50 1 47 0;
+#X connect 50 2 48 0;
+#X connect 50 3 49 0;
+#X connect 55 0 30 0;
+#X connect 56 0 30 0;
+#X connect 60 0 30 0;
+#X connect 61 0 30 0;
diff --git a/pdp_opencv_haarcascade-help.pd b/pdp_opencv_haarcascade-help.pd
index 089df39..4fc5ed1 100644
--- a/pdp_opencv_haarcascade-help.pd
+++ b/pdp_opencv_haarcascade-help.pd
@@ -1,6 +1,4 @@
-#N canvas 15 49 1247 801 10;
-#X text -158 -9 Written by Lluis Gomez i Bigorda ( lluis@artefacte.org
-);
+#N canvas 25 49 1247 801 10;
#X obj -158 12 cnv 15 621 250 empty empty empty 20 12 0 14 -260097
-66577 0;
#X obj 82 52 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
@@ -9,7 +7,7 @@
#X msg 172 106 close;
#X obj 102 177 pdp_v4l;
#X msg 159 74 open /dev/video0;
-#X obj 283 54 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#X obj 283 54 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X obj 283 81 metro 40;
#X msg 364 100 close;
@@ -82,53 +80,55 @@ on Haar's algorithm ( decision tree algorithm );
#X msg 54 388 scale_factor \$1;
#X obj -68 228 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
-1 -1 0 1;
-#X connect 2 0 3 0;
-#X connect 3 0 5 0;
-#X connect 4 0 5 0;
-#X connect 5 0 32 0;
-#X connect 6 0 5 0;
-#X connect 7 0 8 0;
-#X connect 8 0 11 0;
-#X connect 9 0 11 0;
-#X connect 10 0 11 0;
-#X connect 11 0 32 0;
+#X text -158 -9 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 31 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 31 0;
+#X connect 11 0 10 0;
#X connect 12 0 11 0;
-#X connect 13 0 12 0;
-#X connect 14 0 32 0;
+#X connect 13 0 31 0;
+#X connect 14 0 13 0;
#X connect 15 0 14 0;
-#X connect 16 0 15 0;
-#X connect 17 0 15 0;
-#X connect 18 0 19 0;
-#X connect 19 0 14 0;
-#X connect 20 0 18 0;
-#X connect 21 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 17 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
#X connect 22 0 21 0;
-#X connect 23 0 22 0;
-#X connect 23 0 16 0;
-#X connect 31 0 34 0;
-#X connect 31 1 38 0;
-#X connect 31 2 58 0;
-#X connect 32 0 27 0;
-#X connect 32 1 41 0;
-#X connect 32 2 31 0;
-#X connect 34 0 28 0;
-#X connect 34 1 29 0;
-#X connect 34 2 30 0;
-#X connect 38 0 35 0;
-#X connect 38 1 36 0;
-#X connect 38 2 37 0;
-#X connect 43 0 32 0;
+#X connect 22 0 15 0;
+#X connect 30 0 33 0;
+#X connect 30 1 37 0;
+#X connect 30 2 57 0;
+#X connect 31 0 26 0;
+#X connect 31 1 40 0;
+#X connect 31 2 30 0;
+#X connect 33 0 27 0;
+#X connect 33 1 28 0;
+#X connect 33 2 29 0;
+#X connect 37 0 34 0;
+#X connect 37 1 35 0;
+#X connect 37 2 36 0;
+#X connect 42 0 31 0;
+#X connect 43 0 42 0;
#X connect 44 0 43 0;
-#X connect 45 0 44 0;
-#X connect 51 0 32 0;
-#X connect 52 0 51 0;
-#X connect 53 0 32 0;
-#X connect 54 0 53 0;
-#X connect 58 0 55 0;
-#X connect 58 1 56 0;
-#X connect 58 2 57 0;
-#X connect 61 0 63 0;
-#X connect 63 0 32 0;
-#X connect 64 0 69 0;
-#X connect 69 0 32 0;
-#X connect 70 0 14 1;
+#X connect 50 0 31 0;
+#X connect 51 0 50 0;
+#X connect 52 0 31 0;
+#X connect 53 0 52 0;
+#X connect 57 0 54 0;
+#X connect 57 1 55 0;
+#X connect 57 2 56 0;
+#X connect 60 0 62 0;
+#X connect 62 0 31 0;
+#X connect 63 0 68 0;
+#X connect 68 0 31 0;
+#X connect 69 0 13 1;
diff --git a/pdp_opencv_histo-help.pd b/pdp_opencv_histo-help.pd
index 02b6251..53e1332 100644
--- a/pdp_opencv_histo-help.pd
+++ b/pdp_opencv_histo-help.pd
@@ -1,24 +1,81 @@
-#N canvas 0 6 1247 665 10;
-#X obj -72 -110 metro 40;
-#X obj -67 -131 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
-0 1;
-#X obj -12 80 pdp_scale 320 240;
-#X obj -12 350 pdp_xv;
-#X msg 24 315 posdim 0 -23 320 240;
-#X obj 82 241 pdp_xv;
-#X obj 82 201 pdp_opencv_histo;
-#X msg 60 -98 open /dev/video0;
-#X obj -8 -63 pdp_v4l2;
-#X floatatom 189 238 5 0 0 0 - - -;
-#X obj 189 176 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144
+#N canvas 77 86 757 669 10;
+#X obj -147 -72 cnv 15 621 250 empty empty empty 20 12 0 14 -260097
+-66577 0;
+#X obj 93 -32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 93 -5 metro 40;
+#X msg 183 22 close;
+#X obj 113 93 pdp_v4l;
+#X msg 170 -10 open /dev/video0;
+#X obj 294 -30 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 294 -3 metro 40;
+#X msg 375 16 close;
+#X msg 371 -8 open /dev/video0;
+#X obj 315 96 pdp_v4l2;
+#X msg 380 71 format \$1;
+#X obj 381 49 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj -117 143 pdp_qt;
+#X obj -84 79 metro 40;
+#X msg -84 51 bang;
+#X msg -43 51 stop;
+#X obj -117 -18 openpanel;
+#X msg -117 7 open \$1;
+#X msg -117 -46 bang;
+#X msg -83 106 loop \$1;
+#X obj -3 106 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj -3 24 loadbang;
+#X text -74 -43 playing a video file;
+#X text 123 -34 Camera input;
+#X obj -57 144 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text -148 -137 pdp_opencv_histo : image recognition using histograms
+;
+#X text -149 -124 record histograms of specific situations;
+#X text -147 -112 the object will recognize the situations if they
+occur again;
+#X obj -146 186 cnv 15 621 300 empty empty empty 20 12 0 14 -258113
+-66577 0;
+#X obj -118 208 pdp_scale 320 240;
+#X obj -120 380 pdp_xv;
+#X obj -66 340 pdp_xv;
+#X obj -66 300 pdp_opencv_histo;
+#X floatatom 41 337 5 0 0 0 - - -;
+#X obj -12 262 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144
-1 -1 0;
-#X connect 0 0 8 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 2 0 6 0;
-#X connect 4 0 3 0;
-#X connect 6 0 5 0;
-#X connect 6 1 9 0;
-#X connect 7 0 8 0;
-#X connect 8 0 2 0;
-#X connect 10 0 6 1;
+#X text -1 207 <- this scaling saves memmory;
+#X text 71 261 save an histogram at position nth ( 0 <= n <= 80 );
+#X text 77 338 closest histogram;
+#X text -147 -98 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 30 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 30 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 30 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 17 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 22 0 15 0;
+#X connect 25 0 13 1;
+#X connect 30 0 31 0;
+#X connect 30 0 33 0;
+#X connect 33 0 32 0;
+#X connect 33 1 34 0;
+#X connect 35 0 33 1;
diff --git a/pdp_opencv_histo.c b/pdp_opencv_histo.c
index 37b8cc2..7a7e590 100644
--- a/pdp_opencv_histo.c
+++ b/pdp_opencv_histo.c
@@ -53,6 +53,7 @@ typedef struct pdp_opencv_histo_struct
int x_infosok;
int save_now;
+ int nbsaved;
CvHistogram *hist;
CvHistogram *saved_hist[MAX_HISTOGRAMS_TO_COMPARE];
@@ -151,56 +152,55 @@ static void pdp_opencv_histo_process_rgb(t_pdp_opencv_histo *x)
cvCvtColor( x->src, x->hsv, CV_BGR2HSV );
cvCvtPixToPlane( x->hsv, x->h_plane, x->s_plane, x->v_plane, 0 );
- // Build the histogram and compute its contents.
-
-
-
- if (x->save_now>=0) {
+ // Build the histogram and compute its contents.
+ if (x->save_now>=0) {
fprintf(stderr,"saving histogram %d\n",x->save_now);
cvCvtPixToPlane( x->hsv, x->h_saved_plane, x->s_saved_plane, x->v_saved_plane, 0 );
cvCalcHist( x->saved_planes, x->saved_hist[x->save_now], 0, 0 ); //Compute histogram
cvNormalizeHist( x->saved_hist[x->save_now], 1.0 ); //Normalize it
+ x->nbsaved++;
x->save_now=-1;
- }
- cvCalcHist( x->planes, x->hist, 0, 0 ); //Compute histogram
- cvNormalizeHist( x->hist, 1.0 ); //Normalize it
+ }
+ cvCalcHist( x->planes, x->hist, 0, 0 ); //Compute histogram
+ cvNormalizeHist( x->hist, 1.0 ); //Normalize it
- double tato[MAX_HISTOGRAMS_TO_COMPARE];
- int nearest = -1;
- double max = 0;
+ double tato[MAX_HISTOGRAMS_TO_COMPARE];
+ int nearest = -1;
+ double max = 0;
- int n;
- for (n=0; n<MAX_HISTOGRAMS_TO_COMPARE; n++) {
+ int n;
+ for (n=0; n<MAX_HISTOGRAMS_TO_COMPARE; n++) {
tato[n] = cvCompareHist(x->hist, x->saved_hist[n], CV_COMP_INTERSECT);
if (tato[n]>max) {
max = tato[n];
nearest = n;
}
- }
+ }
- outlet_float(x->x_outlet1, (float)nearest);
-
- // Create an image to use to visualize our histogram.
+ if ( x->nbsaved > 0 )
+ outlet_float(x->x_outlet1, (float)nearest);
+ else
+ outlet_float(x->x_outlet1, -1.0);
+
+ // Create an image to use to visualize our histogram.
+ int scale = 10;
+ //IplImage* hist_img = cvCreateImage(
+ // cvSize(x->x_width,x->x_height),
+ // 8,
+ // 3
+ //);
+ //cvZero( hist_img );
+
+ // populate our visualization with little gray squares.
- int scale = 10;
- //IplImage* hist_img = cvCreateImage(
- // cvSize(x->x_width,x->x_height),
- // 8,
- // 3
- //);
- //cvZero( hist_img );
-
- // populate our visualization with little gray squares.
-
- float max_value = 0;
- cvGetMinMaxHistValue( x->hist, 0, &max_value, 0, 0 );
-
- int h = 0;
- int s = 0;
+ float max_value = 0;
+ cvGetMinMaxHistValue( x->hist, 0, &max_value, 0, 0 );
+ int h = 0;
+ int s = 0;
- for( h = 0; h < h_bins; h++ ) {
- for( s = 0; s < s_bins; s++ ) {
+ for( h = 0; h < h_bins; h++ ) {
+ for( s = 0; s < s_bins; s++ ) {
float bin_val = cvQueryHistValue_2D( x->hist, h, s );
int intensity = cvRound( bin_val * 255 / max_value );
cvRectangle(
@@ -209,7 +209,7 @@ static void pdp_opencv_histo_process_rgb(t_pdp_opencv_histo *x)
cvPoint( (h+1)*scale - 1, (s+1)*scale - 1),
CV_RGB(intensity,intensity,intensity), CV_FILLED, 8 , 0 );
}
- }
+ }
//memory copy again, now from x->cedge->imageData to the new data pdp packet
//memcpy( newdata, hist_img, x->x_size*3 );
@@ -288,15 +288,15 @@ static void pdp_opencv_histo_free(t_pdp_opencv_histo *x)
pdp_packet_mark_unused(x->x_packet0);
//cv_freeplugins(x);
- //Destroy cv_images
- cvReleaseImage(&x->src);
- cvReleaseImage(&x->hsv);
- cvReleaseImage(&x->h_plane);
- cvReleaseImage(&x->s_plane);
- cvReleaseImage(&x->v_plane);
- cvReleaseImage(&x->h_saved_plane);
- cvReleaseImage(&x->s_saved_plane);
- cvReleaseImage(&x->v_saved_plane);
+ //Destroy cv_images
+ cvReleaseImage(&x->src);
+ cvReleaseImage(&x->hsv);
+ cvReleaseImage(&x->h_plane);
+ cvReleaseImage(&x->s_plane);
+ cvReleaseImage(&x->v_plane);
+ cvReleaseImage(&x->h_saved_plane);
+ cvReleaseImage(&x->s_saved_plane);
+ cvReleaseImage(&x->v_saved_plane);
}
t_class *pdp_opencv_histo_class;
@@ -322,30 +322,28 @@ void *pdp_opencv_histo_new(t_floatarg f)
x->x_infosok = 0;
x->save_now = 0;
+ x->nbsaved = 0;
-
-
-
- x->src = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3);
- x->hsv = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3 );
-
- x->h_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
- x->s_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
- x->v_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
- x->planes[0] = x->h_plane;
- x->planes[1] = x->s_plane;
- cvCvtPixToPlane( x->hsv, x->h_plane, x->s_plane, x->v_plane, 0 );
- x->h_saved_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
- x->s_saved_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
- x->v_saved_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
- x->saved_planes[0] = x->h_saved_plane;
- x->saved_planes[1] = x->s_saved_plane;
- cvCvtPixToPlane( x->hsv, x->h_saved_plane, x->s_saved_plane, x->v_saved_plane, 0 );
+ x->src = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3);
+ x->hsv = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3 );
+
+ x->h_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
+ x->s_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
+ x->v_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
+ x->planes[0] = x->h_plane;
+ x->planes[1] = x->s_plane;
+ cvCvtPixToPlane( x->hsv, x->h_plane, x->s_plane, x->v_plane, 0 );
+ x->h_saved_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
+ x->s_saved_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
+ x->v_saved_plane = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 1);
+ x->saved_planes[0] = x->h_saved_plane;
+ x->saved_planes[1] = x->s_saved_plane;
+ cvCvtPixToPlane( x->hsv, x->h_saved_plane, x->s_saved_plane, x->v_saved_plane, 0 );
cvCvtColor( x->src, x->hsv, CV_BGR2HSV );
- int h_bins = (int)(x->x_width/10), s_bins = (int)(x->x_height/10);
- {
+ int h_bins = (int)(x->x_width/10), s_bins = (int)(x->x_height/10);
+ {
int hist_size[] = { h_bins, s_bins };
float h_ranges[] = { 0, 180 }; // hue is [0,180]
float s_ranges[] = { 0, 255 };
@@ -367,7 +365,7 @@ void *pdp_opencv_histo_new(t_floatarg f)
1
);
}
- }
+ }
return (void *)x;
}
@@ -389,7 +387,6 @@ void pdp_opencv_histo_setup(void)
class_addmethod(pdp_opencv_histo_class, (t_method)pdp_opencv_histo_input_0, gensym("pdp"), A_SYMBOL, A_DEFFLOAT, A_NULL);
class_addmethod(pdp_opencv_histo_class, (t_method)pdp_opencv_histo_save, gensym("save"), A_FLOAT, A_NULL );
-
}
#ifdef __cplusplus
diff --git a/pdp_opencv_laplace-help.pd b/pdp_opencv_laplace-help.pd
index b23e464..3c543b4 100644
--- a/pdp_opencv_laplace-help.pd
+++ b/pdp_opencv_laplace-help.pd
@@ -1,30 +1,75 @@
-#N canvas 626 25 521 599 10;
-#X obj 101 158 pdp_xv;
-#X obj 101 57 pdp_qt;
-#X obj 134 -7 metro 40;
-#X msg 134 -35 bang;
-#X msg 175 -35 stop;
-#X obj 101 -163 openpanel;
-#X msg 101 -138 open \$1;
-#X msg 101 -191 bang;
-#X msg 135 20 loop \$1;
-#X obj 215 20 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#N canvas 310 159 693 598 10;
+#X obj -110 -117 cnv 15 621 250 empty empty empty 20 12 0 14 -260097
+-66577 0;
+#X obj 130 -77 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#X floatatom 248 101 5 0 0 0 - - -;
-#X obj 215 -62 loadbang;
-#X text 170 -196 1 first load a video file;
-#X obj 101 99 pdp_opencv_laplace;
-#X text 287 102 aperture size (1 \, 3 \, 5 \, 7);
-#X connect 1 0 13 0;
-#X connect 2 0 1 0;
-#X connect 3 0 2 0;
-#X connect 4 0 2 0;
-#X connect 5 0 6 0;
-#X connect 6 0 1 0;
-#X connect 7 0 5 0;
-#X connect 8 0 1 0;
-#X connect 9 0 8 0;
-#X connect 10 0 13 1;
-#X connect 11 0 9 0;
-#X connect 11 0 3 0;
-#X connect 13 0 0 0;
+#X obj 130 -50 metro 40;
+#X msg 220 -23 close;
+#X obj 150 48 pdp_v4l;
+#X msg 207 -55 open /dev/video0;
+#X obj 319 -82 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 319 -55 metro 40;
+#X msg 400 -36 close;
+#X msg 396 -60 open /dev/video0;
+#X obj 340 44 pdp_v4l2;
+#X msg 405 19 format \$1;
+#X obj 406 -3 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj -80 98 pdp_qt;
+#X obj -47 34 metro 40;
+#X msg -47 6 bang;
+#X msg -6 6 stop;
+#X obj -80 -63 openpanel;
+#X msg -80 -38 open \$1;
+#X msg -80 -91 bang;
+#X msg -46 61 loop \$1;
+#X obj 34 61 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X obj 34 -21 loadbang;
+#X text -37 -88 playing a video file;
+#X text 160 -79 Camera input;
+#X obj -20 99 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text -107 -148 Written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text -107 -172 pdp_opencv_laplace : laplace filter;
+#X text -107 -159 used as an edge detector;
+#X obj -108 139 cnv 15 621 80 empty empty empty 20 12 0 14 -258113
+-66577 0;
+#X obj -53 230 pdp_xv;
+#X obj -53 171 pdp_opencv_laplace;
+#X msg 97 146 1;
+#X msg 131 146 3;
+#X msg 164 146 5;
+#X msg 196 146 7;
+#X text 231 146 aperture size ( default 3 );
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 31 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 31 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 31 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 17 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 22 0 15 0;
+#X connect 25 0 13 1;
+#X connect 31 0 30 0;
+#X connect 32 0 31 1;
+#X connect 33 0 31 1;
+#X connect 34 0 31 1;
+#X connect 35 0 31 1;
diff --git a/pdp_opencv_laplace.c b/pdp_opencv_laplace.c
index 8e0e121..688fe9e 100644
--- a/pdp_opencv_laplace.c
+++ b/pdp_opencv_laplace.c
@@ -31,8 +31,6 @@
#include "cv.h"
#endif
-
-
typedef struct pdp_opencv_laplace_struct
{
t_object x_obj;
@@ -63,8 +61,6 @@ typedef struct pdp_opencv_laplace_struct
} t_pdp_opencv_laplace;
-
-
static void pdp_opencv_laplace_process_rgb(t_pdp_opencv_laplace *x)
{
t_pdp *header = pdp_packet_header(x->x_packet0);
@@ -73,7 +69,6 @@ static void pdp_opencv_laplace_process_rgb(t_pdp_opencv_laplace *x)
short int *newdata = (short int *)pdp_packet_data(x->x_packet1);
int i;
-
if ((x->x_width != (t_int)header->info.image.width) ||
(x->x_height != (t_int)header->info.image.height))
{
@@ -107,23 +102,19 @@ static void pdp_opencv_laplace_process_rgb(t_pdp_opencv_laplace *x)
memcpy( newdata, data, x->x_size*3 );
-
// FEM UNA COPIA DEL PACKET A x->grey->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage
memcpy( x->frame->imageData, data, x->x_size*3 );
- cvCvtPixToPlane( x->frame, x->planes[0], x->planes[1], x->planes[2], 0 );
- for( i = 0; i < 3; i++ )
- {
- cvLaplace( x->planes[i], x->laplace, x->aperture_size );
- cvConvertScaleAbs( x->laplace, x->planes[i], 1, 0 );
- }
- cvCvtPlaneToPix( x->planes[0], x->planes[1], x->planes[2], 0, x->colorlaplace );
- x->colorlaplace->origin = x->frame->origin;
-
- //cvShowImage("Laplacian", colorlaplace );
+ cvCvtPixToPlane( x->frame, x->planes[0], x->planes[1], x->planes[2], 0 );
+ for( i = 0; i < 3; i++ )
+ {
+ cvLaplace( x->planes[i], x->laplace, x->aperture_size );
+ cvConvertScaleAbs( x->laplace, x->planes[i], 1, 0 );
+ }
+ cvCvtPlaneToPix( x->planes[0], x->planes[1], x->planes[2], 0, x->colorlaplace );
+ x->colorlaplace->origin = x->frame->origin;
memcpy( newdata, x->colorlaplace->imageData, x->x_size*3 );
-
return;
}
@@ -131,7 +122,7 @@ static void pdp_opencv_laplace_process_rgb(t_pdp_opencv_laplace *x)
static void pdp_opencv_laplace_thresh(t_pdp_opencv_laplace *x, t_floatarg f)
{
- if ((f==1)||(f==3)||(f==5)||(f==7)) x->aperture_size = (int)f;
+ if ((f==1)||(f==3)||(f==5)||(f==7)) x->aperture_size = (int)f;
}
static void pdp_opencv_laplace_sendpacket(t_pdp_opencv_laplace *x)
@@ -148,13 +139,6 @@ static void pdp_opencv_laplace_process(t_pdp_opencv_laplace *x)
{
int encoding;
t_pdp *header = 0;
- char *parname;
- unsigned pi;
- int partype;
- float pardefault;
- t_atom plist[2];
- t_atom tlist[2];
- t_atom vlist[2];
/* check if image data packets are compatible */
if ( (header = pdp_packet_header(x->x_packet0))
@@ -197,14 +181,13 @@ static void pdp_opencv_laplace_free(t_pdp_opencv_laplace *x)
pdp_queue_finish(x->x_queue_id);
pdp_packet_mark_unused(x->x_packet0);
- //cv_freeplugins(x);
- //Destroy cv_images
- for( i = 0; i < 3; i++ )
- cvReleaseImage( &x->planes[i] );
- cvReleaseImage( &x->frame );
- cvReleaseImage( &x->laplace );
- cvReleaseImage( &x->colorlaplace );
+ //Destroy cv_images
+ for( i = 0; i < 3; i++ )
+ cvReleaseImage( &x->planes[i] );
+ cvReleaseImage( &x->frame );
+ cvReleaseImage( &x->laplace );
+ cvReleaseImage( &x->colorlaplace );
}
t_class *pdp_opencv_laplace_class;
@@ -230,7 +213,6 @@ void *pdp_opencv_laplace_new(t_floatarg f)
x->x_infosok = 0;
x->aperture_size = 3;
-
for( i = 0; i < 3; i++ )
x->planes[i] = cvCreateImage( cvSize(x->x_width, x->x_height), 8, 1 );
diff --git a/pdp_opencv_lk-help.pd b/pdp_opencv_lk-help.pd
index 6ae1682..4bc5643 100644
--- a/pdp_opencv_lk-help.pd
+++ b/pdp_opencv_lk-help.pd
@@ -1,92 +1,142 @@
-#N canvas 479 193 718 599 10;
-#X obj 109 285 pdp_xv;
-#X msg 22 -157 open /dev/video0;
-#X obj 96 -26 pdp_v4l2;
-#X floatatom 230 99 5 0 0 0 - - -;
-#X obj 109 242 pdp_opencv_lk;
-#X obj 96 -74 metro 40;
-#X msg 96 -105 bang;
-#X msg 137 -106 stop;
-#X text 265 98 window size;
-#X obj 285 77 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#N canvas 15 49 833 785 10;
+#X text -14 -95 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+) and Yves Degoyon ( ydegoyon@gmail.com );
+#X obj -17 -55 cnv 15 621 250 empty empty empty 20 12 0 14 -260097
+-66577 0;
+#X obj 223 -15 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 223 12 metro 40;
+#X msg 313 39 close;
+#X obj 243 110 pdp_v4l;
+#X msg 300 7 open /dev/video0;
+#X obj 412 -20 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 412 7 metro 40;
+#X msg 493 26 close;
+#X msg 489 2 open /dev/video0;
+#X obj 433 106 pdp_v4l2;
+#X msg 498 81 format \$1;
+#X obj 499 59 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj 13 160 pdp_qt;
+#X obj 46 96 metro 40;
+#X msg 46 68 bang;
+#X msg 87 68 stop;
+#X obj 13 -1 openpanel;
+#X msg 13 24 open \$1;
+#X msg 13 -29 bang;
+#X msg 47 123 loop \$1;
+#X obj 127 123 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#X msg 200 75 nightmode \$1;
-#X text 304 78 set nightmode;
-#X text 107 370 pdp_opencv_lk : contour point marker using pyramid
+#X obj 127 41 loadbang;
+#X text 56 -26 playing a video file;
+#X text 253 -17 Camera input;
+#X obj 73 161 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text -14 -120 pdp_opencv_lk : contour point detection using pyramid
segmentation;
-#X msg 195 49 quality \$1;
-#X floatatom 270 50 5 0 0 0 - - -;
-#X floatatom 278 25 5 0 0 0 - - -;
-#X msg 181 24 mindistance \$1;
-#X text 319 23 set distance ( default 10 );
-#X msg 174 -4 init;
-#X text 212 -4 init point detections;
-#X obj 265 -49 pdp_xv;
-#X obj 264 -76 pdp_opencv_edge;
-#X floatatom 373 -73 5 0 0 0 - - -;
-#X text 410 -75 edge threshold;
-#X floatatom 363 50 5 0 0 0 - - -;
-#X obj 174 -27 t b;
-#X obj 308 48 / 1000;
-#X msg 160 285 cursor 1;
-#X obj 109 311 route press;
-#X msg 231 125 mark \$1 \$2;
-#X msg 242 151 delete \$1;
-#X text 107 395 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
-) and Yves Degoyon ( ydegoyon@gmail.com );
-#X text 313 151 delete a marker;
-#X msg 253 177 clear;
-#X text 301 178 delete all markers;
-#X msg 260 204 maxmove \$1;
-#X text 374 204 max movement of a marker ( default 5 pisels );
-#X floatatom 336 206 5 0 0 0 - - -;
-#X text 495 49 set quality ( default 100 );
-#X msg 403 48 100;
-#X obj 436 48 loadbang;
-#X text 310 126 mark %x %y : mark a point to track ( max points : 10
+#X obj -15 203 cnv 15 621 400 empty empty empty 20 12 0 14 -258113
+-66577 0;
+#X obj 38 628 pdp_xv;
+#X floatatom 159 315 5 0 0 0 - - -;
+#X obj 38 458 pdp_opencv_lk;
+#X text 194 314 window size;
+#X obj 214 293 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 129 291 nightmode \$1;
+#X text 233 294 set nightmode;
+#X msg 124 265 quality \$1;
+#X floatatom 199 266 5 0 0 0 - - -;
+#X floatatom 207 241 5 0 0 0 - - -;
+#X msg 110 240 mindistance \$1;
+#X text 248 239 set distance ( default 10 );
+#X msg 103 212 init;
+#X text 172 212 init point detections;
+#X obj 414 169 pdp_xv;
+#X obj 314 169 pdp_opencv_edge;
+#X floatatom 292 266 5 0 0 0 - - -;
+#X obj 140 212 t b;
+#X obj 237 264 / 1000;
+#X msg 89 628 cursor 1;
+#X obj 38 654 route press;
+#X msg 160 341 mark \$1 \$2;
+#X msg 171 367 delete \$1;
+#X text 242 367 delete a marker;
+#X msg 182 393 clear;
+#X text 230 394 delete all markers;
+#X msg 189 420 maxmove \$1;
+#X text 303 420 max movement of a marker ( default 5 pisels );
+#X floatatom 265 422 5 0 0 0 - - -;
+#X text 424 265 set quality ( default 100 );
+#X msg 332 264 100;
+#X obj 365 264 loadbang;
+#X text 239 342 mark %x %y : mark a point to track ( max points : 10
);
-#X obj 273 296 unpack f f;
-#X floatatom 274 321 5 0 0 0 - - -;
-#X floatatom 332 322 5 0 0 0 - - -;
-#X text 275 337 X;
-#X text 330 338 Y;
-#X obj 272 270 route 1 2 3 4 5 6 7 8 9 10;
-#X obj 380 -41 / 2;
-#X connect 0 0 28 0;
-#X connect 1 0 2 0;
-#X connect 2 0 4 0;
-#X connect 2 0 21 0;
-#X connect 3 0 4 1;
-#X connect 4 0 0 0;
-#X connect 4 0 27 0;
-#X connect 4 1 47 0;
-#X connect 5 0 2 0;
+#X obj 141 535 unpack f f;
+#X floatatom 142 560 5 0 0 0 - - -;
+#X floatatom 200 561 5 0 0 0 - - -;
+#X text 143 576 X;
+#X text 198 577 Y;
+#X obj 140 509 route 1 2 3 4 5 6 7 8 9 10;
+#X obj 285 169 / 2;
+#X text 167 630 <-- mark the points you want to track in the video
+window;
+#X text 312 510 position of each marked point;
+#X connect 2 0 3 0;
+#X connect 3 0 5 0;
+#X connect 4 0 5 0;
+#X connect 5 0 31 0;
+#X connect 5 0 44 0;
#X connect 6 0 5 0;
-#X connect 7 0 5 0;
-#X connect 9 0 10 0;
-#X connect 10 0 4 0;
-#X connect 13 0 4 0;
-#X connect 14 0 13 0;
-#X connect 15 0 16 0;
-#X connect 16 0 4 0;
-#X connect 18 0 4 0;
-#X connect 21 0 20 0;
-#X connect 22 0 21 1;
-#X connect 24 0 26 0;
-#X connect 24 0 25 0;
-#X connect 24 0 48 0;
-#X connect 25 0 18 0;
-#X connect 26 0 14 0;
-#X connect 27 0 0 0;
-#X connect 28 0 29 0;
-#X connect 29 0 4 0;
-#X connect 30 0 4 0;
-#X connect 33 0 4 0;
-#X connect 35 0 4 0;
-#X connect 37 0 35 0;
-#X connect 39 0 24 0;
-#X connect 40 0 39 0;
-#X connect 42 0 43 0;
-#X connect 42 1 44 0;
-#X connect 47 0 42 0;
-#X connect 48 0 22 0;
+#X connect 7 0 8 0;
+#X connect 8 0 11 0;
+#X connect 9 0 11 0;
+#X connect 10 0 11 0;
+#X connect 11 0 31 0;
+#X connect 11 0 44 0;
+#X connect 12 0 11 0;
+#X connect 13 0 12 0;
+#X connect 14 0 31 0;
+#X connect 14 0 44 0;
+#X connect 15 0 14 0;
+#X connect 16 0 15 0;
+#X connect 17 0 15 0;
+#X connect 18 0 19 0;
+#X connect 19 0 14 0;
+#X connect 20 0 18 0;
+#X connect 21 0 14 0;
+#X connect 22 0 21 0;
+#X connect 23 0 22 0;
+#X connect 23 0 16 0;
+#X connect 26 0 14 1;
+#X connect 29 0 49 0;
+#X connect 30 0 31 1;
+#X connect 31 0 29 0;
+#X connect 31 0 48 0;
+#X connect 31 1 67 0;
+#X connect 33 0 34 0;
+#X connect 34 0 31 0;
+#X connect 36 0 31 0;
+#X connect 37 0 36 0;
+#X connect 38 0 39 0;
+#X connect 39 0 31 0;
+#X connect 41 0 31 0;
+#X connect 44 0 43 0;
+#X connect 45 0 47 0;
+#X connect 45 0 46 0;
+#X connect 45 0 68 0;
+#X connect 46 0 41 0;
+#X connect 47 0 37 0;
+#X connect 48 0 29 0;
+#X connect 49 0 50 0;
+#X connect 50 0 31 0;
+#X connect 51 0 31 0;
+#X connect 53 0 31 0;
+#X connect 55 0 31 0;
+#X connect 57 0 55 0;
+#X connect 59 0 45 0;
+#X connect 60 0 59 0;
+#X connect 62 0 63 0;
+#X connect 62 1 64 0;
+#X connect 67 0 62 0;
+#X connect 68 0 44 1;
diff --git a/pdp_opencv_morphology-help.pd b/pdp_opencv_morphology-help.pd
index 2bbe7bb..235ec2b 100644
--- a/pdp_opencv_morphology-help.pd
+++ b/pdp_opencv_morphology-help.pd
@@ -1,45 +1,99 @@
-#N canvas 575 65 668 599 10;
-#X obj 101 158 pdp_xv;
-#X obj 101 -2 pdp_qt;
-#X obj 134 -66 metro 40;
-#X msg 134 -94 bang;
-#X msg 175 -94 stop;
-#X obj 101 -163 openpanel;
-#X msg 101 -138 open \$1;
-#X msg 101 -191 bang;
-#X msg 135 -39 loop \$1;
-#X obj 215 -39 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+#N canvas 471 76 685 626 10;
+#X obj -22 -6 cnv 15 621 250 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 218 34 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
-#X floatatom 276 106 5 0 0 0 - - -;
-#X obj 215 -121 loadbang;
-#X text 170 -196 1 first load a video file;
-#X obj 342 -2 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+#X obj 218 61 metro 40;
+#X msg 308 88 close;
+#X obj 238 159 pdp_v4l;
+#X msg 295 56 open /dev/video0;
+#X obj 407 29 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
-#X msg 263 43 shape 2;
-#X msg 253 23 shape 1;
-#X msg 273 62 shape 3;
-#X msg 251 -2 mode \$1;
-#X text 310 24 use rectangle structuring element;
-#X text 328 59 use cross-shaped structuring element;
-#X text 322 41 use elliptic structuring element;
-#X obj 101 99 pdp_opencv_morphology;
-#X text 361 -2 switch open/close and erode/dilate modes;
-#X text 315 107 number of iterations -10/+10 (be carefull \; );
-#X connect 1 0 21 0;
-#X connect 2 0 1 0;
-#X connect 3 0 2 0;
-#X connect 4 0 2 0;
-#X connect 5 0 6 0;
-#X connect 6 0 1 0;
-#X connect 7 0 5 0;
-#X connect 8 0 1 0;
-#X connect 9 0 8 0;
-#X connect 10 0 21 1;
-#X connect 11 0 9 0;
-#X connect 11 0 3 0;
-#X connect 13 0 17 0;
-#X connect 14 0 21 0;
-#X connect 15 0 21 0;
-#X connect 16 0 21 0;
-#X connect 17 0 21 0;
-#X connect 21 0 0 0;
+#X obj 407 56 metro 40;
+#X msg 488 75 close;
+#X msg 484 51 open /dev/video0;
+#X obj 428 155 pdp_v4l2;
+#X msg 493 130 format \$1;
+#X obj 494 108 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 8 209 pdp_qt;
+#X obj 41 145 metro 40;
+#X msg 41 117 bang;
+#X msg 82 117 stop;
+#X obj 8 48 openpanel;
+#X msg 8 73 open \$1;
+#X msg 8 20 bang;
+#X msg 42 172 loop \$1;
+#X obj 122 172 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 122 90 loadbang;
+#X text 51 23 playing a video file;
+#X text 248 32 Camera input;
+#X obj 68 210 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text -20 -33 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X text -19 -71 pdp_opencv_morphology : morphology filter ( erosion
+/ dilatation );
+#X text -19 -46 used as a filter to focus on bright or dark zones;
+#X obj -18 327 cnv 15 621 200 empty empty empty 20 12 0 14 -258113
+-66577 0;
+#X obj 9 537 pdp_xv;
+#X floatatom 184 471 5 0 0 0 - - -;
+#X obj 218 363 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 172 421 shape 2;
+#X msg 162 401 shape 1;
+#X msg 182 440 shape 3;
+#X msg 159 363 mode \$1;
+#X text 219 402 use rectangle structuring element;
+#X text 237 437 use cross-shaped structuring element;
+#X text 231 419 use elliptic structuring element;
+#X obj 9 464 pdp_opencv_morphology;
+#X text 237 363 switch open/close and erode/dilate modes;
+#X text 223 472 number of iterations -10/+10 be careful \, might freeze
+your CPU );
+#X text 237 451 ( default rectangle );
+#X text 239 376 default open/close;
+#X obj -21 248 cnv 15 621 73 empty empty empty 20 12 0 14 -260801 -66577
+0;
+#X msg 161 271 set;
+#X floatatom 161 295 5 0 0 0 - - -;
+#X text 199 294 threshold (default 13) to use when comparing pixel
+colors;
+#X text 196 270 set the background reference;
+#X obj 10 295 pdp_opencv_bgsubstract;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
+#X connect 3 0 4 0;
+#X connect 4 0 50 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 50 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 50 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 17 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 22 0 15 0;
+#X connect 25 0 13 1;
+#X connect 31 0 40 1;
+#X connect 32 0 36 0;
+#X connect 33 0 40 0;
+#X connect 34 0 40 0;
+#X connect 35 0 40 0;
+#X connect 36 0 40 0;
+#X connect 40 0 30 0;
+#X connect 46 0 50 0;
+#X connect 47 0 50 1;
+#X connect 50 0 40 0;
diff --git a/pdp_opencv_morphology.c b/pdp_opencv_morphology.c
index c86a95a..6e4b9bc 100644
--- a/pdp_opencv_morphology.c
+++ b/pdp_opencv_morphology.c
@@ -31,8 +31,6 @@
#include "cv.h"
#endif
-
-
typedef struct pdp_opencv_morphology_struct
{
t_object x_obj;
@@ -59,14 +57,10 @@ typedef struct pdp_opencv_morphology_struct
IplImage* dst;
IplConvKernel* element;
-
-
} t_pdp_opencv_morphology;
-
-
// callback function for open/close trackbar
void pdp_opencv_morphology_OpenClose(t_pdp_opencv_morphology *x, int pos)
{
@@ -84,7 +78,6 @@ void pdp_opencv_morphology_OpenClose(t_pdp_opencv_morphology *x, int pos)
cvErode(x->dst,x->dst,x->element,1);
}
cvReleaseStructuringElement(&x->element);
- //cvShowImage("Open/Close",dst);
}
// callback function for erode/dilate trackbar
@@ -102,7 +95,6 @@ void pdp_opencv_morphology_ErodeDilate(t_pdp_opencv_morphology *x, int pos)
cvDilate(x->src,x->dst,x->element,1);
}
cvReleaseStructuringElement(&x->element);
- //cvShowImage("Erode/Dilate",dst);
}
@@ -146,12 +138,10 @@ static void pdp_opencv_morphology_process_rgb(t_pdp_opencv_morphology *x)
// FEM UNA COPIA DEL PACKET A x->grey->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage
memcpy( x->src->imageData, data, x->x_size*3 );
- if (x->mode==1) pdp_opencv_morphology_OpenClose(x,x->pos);
- else pdp_opencv_morphology_ErodeDilate(x,x->pos);
-
+ if (x->mode==1) pdp_opencv_morphology_OpenClose(x,x->pos);
+ else pdp_opencv_morphology_ErodeDilate(x,x->pos);
memcpy( newdata, x->dst->imageData, x->x_size*3 );
-
return;
}
@@ -178,7 +168,7 @@ static void pdp_opencv_morphology_mode(t_pdp_opencv_morphology *x, t_floatarg f)
static void pdp_opencv_morphology_pos(t_pdp_opencv_morphology *x, t_floatarg f)
{
- x->pos = (int)f;
+ x->pos = (int)f;
}
static void pdp_opencv_morphology_sendpacket(t_pdp_opencv_morphology *x)
@@ -244,16 +234,14 @@ static void pdp_opencv_morphology_free(t_pdp_opencv_morphology *x)
pdp_queue_finish(x->x_queue_id);
pdp_packet_mark_unused(x->x_packet0);
- //cv_freeplugins(x);
- //Destroy cv_images
- cvReleaseImage( &x->src );
- cvReleaseImage( &x->dst );
+ //Destroy cv_images
+ cvReleaseImage( &x->src );
+ cvReleaseImage( &x->dst );
}
t_class *pdp_opencv_morphology_class;
-
void *pdp_opencv_morphology_new(t_floatarg f)
{
int i;
@@ -278,12 +266,10 @@ void *pdp_opencv_morphology_new(t_floatarg f)
x->mode = 0;
x->element = 0;
-
x->src = cvCreateImage( cvSize(x->x_width,x->x_height), 8, 3 );
x->dst = cvCloneImage(x->src);
-
return (void *)x;
}
diff --git a/pdp_opencv_motempl-help.pd b/pdp_opencv_motempl-help.pd
index a0af63d..6344607 100644
--- a/pdp_opencv_motempl-help.pd
+++ b/pdp_opencv_motempl-help.pd
@@ -1,140 +1,136 @@
-#N canvas 20 121 1247 665 10;
-#X floatatom 485 286 5 0 0 0 - - -;
-#X floatatom 583 247 5 0 0 0 - - -;
-#X text 525 288 Threshold value. (default 30);
-#X obj 492 373 route -1 0 1 2 3 4;
-#X floatatom 495 453 5 0 0 0 - - -;
-#X floatatom 530 453 5 0 0 0 - - -;
-#X floatatom 567 453 5 0 0 0 - - -;
-#X floatatom 601 453 5 0 0 0 - - -;
-#X floatatom 524 502 5 0 0 0 - - -;
-#X floatatom 559 502 5 0 0 0 - - -;
-#X floatatom 596 502 5 0 0 0 - - -;
-#X floatatom 630 502 5 0 0 0 - - -;
-#X floatatom 568 558 5 0 0 0 - - -;
-#X floatatom 603 558 5 0 0 0 - - -;
-#X floatatom 640 558 5 0 0 0 - - -;
-#X floatatom 674 558 5 0 0 0 - - -;
-#X obj 492 424 unpack 0 0 0 0 0;
-#X obj 521 473 unpack 0 0 0 0 0;
-#X obj 565 529 unpack 0 0 0 0 0;
-#X floatatom 638 452 5 0 0 0 - - -;
-#X floatatom 668 502 5 0 0 0 - - -;
-#X floatatom 712 558 5 0 0 0 - - -;
-#X text 552 391 For each motion component component;
-#X text 614 424 (-1) means the whole image;
-#X text 689 450 Xcenter Ycenter Width Height Angle;
-#X text 710 501 Xcenter Ycenter Width Height Angle;
-#X text 757 557 Xcenter Ycenter Width Height Angle;
-#X obj 360 329 pdp_opencv_motempl;
-#X obj 364 374 pdp_xv;
-#X msg 479 244 mhi_duration \$1;
-#X obj 59 391 pdp_qt;
-#X obj 56 41 metro 40;
-#X msg 56 13 bang;
-#X msg 97 13 stop;
-#X msg 15 13 bang;
-#X obj 140 41 openpanel;
-#X msg 140 66 open \$1;
-#X msg 140 13 bang;
-#X msg 140 92 close;
-#X floatatom 140 120 5 0 0 0 - - -;
-#X floatatom 140 146 5 0 0 0 - - -;
-#X msg 140 197 loop \$1;
-#X obj 203 182 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0
-1;
-#X msg 142 341 dump array 0;
-#X msg 142 291 stop;
-#X msg 141 222 autoplay 1;
-#X msg 142 267 play;
-#X msg 142 315 cont;
-#X floatatom 548 126 5 0 0 0 - - -;
-#X msg 430 123 max_time_delta \$1;
-#X floatatom 562 151 5 0 0 0 - - -;
-#X msg 445 149 min_time_delta \$1;
-#X floatatom 591 216 5 0 0 0 - - -;
-#X msg 463 214 frame_buffer_num \$1;
-#X floatatom 512 304 5 0 0 0 - - -;
-#X floatatom 523 323 5 0 0 0 - - -;
-#X text 563 325 Max size of the motion component (default 500);
-#X text 553 304 Min size of the motion component (default 50);
-#X text 586 125 Max time delta in seconds. (default 0.5);
-#X text 600 151 Min time delta in seconds. (default 0.05);
-#X obj 231 72 pdp_v4l2;
-#X obj 231 45 metro 40;
-#X msg 231 20 bang;
-#X obj 303 43 metro 40;
-#X msg 303 18 bang;
-#X obj 303 70 pdp_v4l;
-#X text 51 557 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+#N canvas 1 49 1424 780 10;
+#X text 22 30 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
);
-#X text 52 533 pdp_opencv_motempl : opencv motion detection based on
-history;
-#X text 632 216 Number of frames in the history buffer. (default 4)
+#X text 23 6 pdp_opencv_motempl : opencv motion detection based on
+movement history;
+#X obj 11 63 cnv 15 621 250 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 251 103 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 251 130 metro 40;
+#X msg 341 157 close;
+#X obj 271 228 pdp_v4l;
+#X msg 328 125 open /dev/video0;
+#X obj 440 98 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 440 125 metro 40;
+#X msg 521 144 close;
+#X msg 517 120 open /dev/video0;
+#X obj 461 224 pdp_v4l2;
+#X msg 526 199 format \$1;
+#X obj 527 177 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X obj 41 278 pdp_qt;
+#X obj 74 214 metro 40;
+#X msg 74 186 bang;
+#X msg 115 186 stop;
+#X obj 41 117 openpanel;
+#X msg 41 142 open \$1;
+#X msg 41 89 bang;
+#X msg 75 241 loop \$1;
+#X obj 155 241 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 155 159 loadbang;
+#X text 84 92 playing a video file;
+#X text 281 101 Camera input;
+#X obj 101 279 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X obj 12 324 cnv 15 621 250 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X floatatom 191 500 5 0 0 0 - - -;
+#X floatatom 242 459 5 0 0 0 - - -;
+#X text 231 502 Threshold value. (default 30);
+#X obj 198 587 route -1 0 1 2 3 4;
+#X floatatom 201 658 5 0 0 0 - - -;
+#X floatatom 236 658 5 0 0 0 - - -;
+#X floatatom 273 658 5 0 0 0 - - -;
+#X floatatom 307 658 5 0 0 0 - - -;
+#X floatatom 412 657 5 0 0 0 - - -;
+#X floatatom 447 657 5 0 0 0 - - -;
+#X floatatom 484 657 5 0 0 0 - - -;
+#X floatatom 518 657 5 0 0 0 - - -;
+#X obj 198 629 unpack 0 0 0 0 0;
+#X obj 409 628 unpack 0 0 0 0 0;
+#X floatatom 344 657 5 0 0 0 - - -;
+#X floatatom 556 657 5 0 0 0 - - -;
+#X text 198 610 (-1) means the whole image;
+#X text 194 675 Xcenter Ycenter Width Height Angle;
+#X text 409 673 Xcenter Ycenter Width Height Angle;
+#X obj 62 555 pdp_opencv_motempl;
+#X obj 62 672 pdp_xv;
+#X msg 138 456 mhi_duration \$1;
+#X floatatom 207 338 5 0 0 0 - - -;
+#X msg 89 335 max_time_delta \$1;
+#X floatatom 221 363 5 0 0 0 - - -;
+#X msg 104 361 min_time_delta \$1;
+#X floatatom 250 428 5 0 0 0 - - -;
+#X msg 122 426 frame_buffer_num \$1;
+#X floatatom 218 518 5 0 0 0 - - -;
+#X floatatom 229 537 5 0 0 0 - - -;
+#X text 269 539 Max size of the motion component (default 500);
+#X text 259 518 Min size of the motion component (default 50);
+#X text 245 337 Max time delta in seconds. (default 0.5);
+#X text 259 363 Min time delta in seconds. (default 0.05);
+#X text 291 428 Number of frames in the history buffer. (default 4)
;
-#X text 625 248 Maximal duration of motion track in seconds. (default
+#X text 284 460 Maximal duration of motion track in seconds. (default
1.0);
-#X msg 456 180 aperture \$1;
-#X text 653 177 aperture ( 3 \, 5 or 7 \, default 3 );
-#X msg 536 180 3;
-#X msg 569 180 5;
-#X msg 600 180 7;
-#X connect 0 0 27 1;
-#X connect 1 0 29 0;
-#X connect 3 0 16 0;
-#X connect 3 1 17 0;
-#X connect 3 2 18 0;
-#X connect 16 0 4 0;
-#X connect 16 1 5 0;
-#X connect 16 2 6 0;
-#X connect 16 3 7 0;
-#X connect 16 4 19 0;
-#X connect 17 0 8 0;
-#X connect 17 1 9 0;
-#X connect 17 2 10 0;
-#X connect 17 3 11 0;
-#X connect 17 4 20 0;
-#X connect 18 0 12 0;
-#X connect 18 1 13 0;
-#X connect 18 2 14 0;
-#X connect 18 3 15 0;
-#X connect 18 4 21 0;
-#X connect 27 0 28 0;
-#X connect 27 1 3 0;
-#X connect 29 0 27 0;
-#X connect 30 0 27 0;
-#X connect 31 0 30 0;
-#X connect 32 0 31 0;
-#X connect 33 0 31 0;
-#X connect 34 0 30 0;
-#X connect 35 0 36 0;
-#X connect 36 0 30 0;
-#X connect 37 0 35 0;
-#X connect 38 0 30 0;
-#X connect 39 0 30 0;
-#X connect 40 0 30 1;
-#X connect 41 0 30 0;
-#X connect 42 0 41 0;
-#X connect 43 0 30 0;
-#X connect 44 0 30 0;
-#X connect 45 0 30 0;
-#X connect 46 0 30 0;
-#X connect 47 0 30 0;
+#X msg 115 392 aperture \$1;
+#X text 291 393 aperture ( 3 \, 5 or 7 \, default 3 );
+#X msg 195 392 3;
+#X msg 228 392 5;
+#X msg 259 392 7;
+#X text 406 610 For each motion component;
+#X connect 3 0 4 0;
+#X connect 4 0 6 0;
+#X connect 5 0 6 0;
+#X connect 6 0 48 0;
+#X connect 7 0 6 0;
+#X connect 8 0 9 0;
+#X connect 9 0 12 0;
+#X connect 10 0 12 0;
+#X connect 11 0 12 0;
+#X connect 12 0 48 0;
+#X connect 13 0 12 0;
+#X connect 14 0 13 0;
+#X connect 15 0 48 0;
+#X connect 16 0 15 0;
+#X connect 17 0 16 0;
+#X connect 18 0 16 0;
+#X connect 19 0 20 0;
+#X connect 20 0 15 0;
+#X connect 21 0 19 0;
+#X connect 22 0 15 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 24 0 17 0;
+#X connect 27 0 15 1;
+#X connect 29 0 48 1;
+#X connect 30 0 50 0;
+#X connect 32 0 41 0;
+#X connect 32 1 42 0;
+#X connect 41 0 33 0;
+#X connect 41 1 34 0;
+#X connect 41 2 35 0;
+#X connect 41 3 36 0;
+#X connect 41 4 43 0;
+#X connect 42 0 37 0;
+#X connect 42 1 38 0;
+#X connect 42 2 39 0;
+#X connect 42 3 40 0;
+#X connect 42 4 44 0;
#X connect 48 0 49 0;
-#X connect 49 0 27 0;
-#X connect 50 0 51 0;
-#X connect 51 0 27 0;
-#X connect 52 0 53 0;
-#X connect 53 0 27 0;
-#X connect 54 0 27 2;
-#X connect 55 0 27 3;
-#X connect 60 0 27 0;
-#X connect 61 0 60 0;
-#X connect 62 0 61 0;
-#X connect 63 0 65 0;
-#X connect 64 0 63 0;
-#X connect 65 0 27 0;
-#X connect 70 0 27 0;
-#X connect 72 0 70 0;
-#X connect 73 0 70 0;
-#X connect 74 0 70 0;
+#X connect 48 1 32 0;
+#X connect 50 0 48 0;
+#X connect 51 0 52 0;
+#X connect 52 0 48 0;
+#X connect 53 0 54 0;
+#X connect 54 0 48 0;
+#X connect 55 0 56 0;
+#X connect 56 0 48 0;
+#X connect 57 0 48 2;
+#X connect 58 0 48 3;
+#X connect 65 0 48 0;
+#X connect 67 0 65 0;
+#X connect 68 0 65 0;
+#X connect 69 0 65 0;
diff --git a/pdp_opencv_motempl.c b/pdp_opencv_motempl.c
index 00b95ac..e9989c0 100644
--- a/pdp_opencv_motempl.c
+++ b/pdp_opencv_motempl.c
@@ -206,7 +206,7 @@ void pdp_opencv_motempl_update_mhi( t_pdp_opencv_motempl *x, IplImage* img, Ipl
SETFLOAT(&x->rlist[3], comp_rect.width);
SETFLOAT(&x->rlist[4], comp_rect.height);
SETFLOAT(&x->rlist[5], angle);
- outlet_list( x->x_dataout, 0, 6, x->rlist );
+ outlet_list( x->x_dataout, 0, 6, x->rlist );
}
}
diff --git a/pdp_opencv_threshold-help.pd b/pdp_opencv_threshold-help.pd
index 0dfd360..7605121 100644
--- a/pdp_opencv_threshold-help.pd
+++ b/pdp_opencv_threshold-help.pd
@@ -1,19 +1,91 @@
-#N canvas 0 0 521 599 10;
-#X obj 101 158 pdp_xv;
-#X floatatom 256 100 5 0 0 0 - - -;
-#X msg 101 -138 open /dev/video0;
-#X obj 101 57 pdp_v4l2;
-#X obj 101 99 pdp_opencv_threshold;
-#X text 295 101 threshold value;
-#X msg 186 61 mode \$1;
-#X floatatom 255 61 5 0 0 0 - - -;
-#X text 301 60 mode \, 0 \, 1 \, 2 \, 3 \, 4;
-#X floatatom 257 80 5 0 0 0 - - -;
-#X text 298 80 Max value used in some modes;
-#X connect 1 0 4 2;
-#X connect 2 0 3 0;
+#N canvas 10 73 1039 729 10;
+#X obj 11 -57 cnv 15 621 250 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 251 -17 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 251 10 metro 40;
+#X msg 341 37 close;
+#X obj 271 108 pdp_v4l;
+#X msg 328 5 open /dev/video0;
+#X obj 440 -22 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
+1;
+#X obj 440 5 metro 40;
+#X msg 521 24 close;
+#X msg 517 0 open /dev/video0;
+#X obj 461 104 pdp_v4l2;
+#X msg 526 79 format \$1;
+#X obj 527 57 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X obj 41 158 pdp_qt;
+#X obj 74 94 metro 40;
+#X msg 74 66 bang;
+#X msg 115 66 stop;
+#X obj 41 -3 openpanel;
+#X msg 41 22 open \$1;
+#X msg 41 -31 bang;
+#X msg 75 121 loop \$1;
+#X obj 155 121 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 155 39 loadbang;
+#X text 84 -28 playing a video file;
+#X text 281 -19 Camera input;
+#X obj 101 159 hsl 128 15 0 500 0 0 empty empty empty -2 -8 0 10 -262144
+-1 -1 0 1;
+#X text 14 -122 pdp_opencv_threshold : pixel thresholding;
+#X text 14 -97 written by Lluis Gomez i Bigorda ( lluisgomez@hangar.org
+);
+#X obj 12 201 cnv 15 621 150 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X obj 58 396 pdp_xv;
+#X floatatom 174 289 5 0 0 0 - - -;
+#X obj 59 316 pdp_opencv_threshold;
+#X msg 351 325 mode \$1;
+#X floatatom 128 270 5 0 0 0 - - -;
+#X text 128 253 Max value used in some modes;
+#X msg 328 213 0;
+#X msg 349 236 1;
+#X msg 372 259 2;
+#X msg 396 280 3;
+#X msg 423 303 4;
+#X text 171 273 threshold value;
+#X text 207 290 ( default 50 );
+#X text 402 325 thresholding mode ( default 0 );
+#X text 13 -109 used as a filter to detect bright or dark piksels;
+#X text 360 211 pixel >= threshold;
+#X text 400 258 pixel >= threshold set to threshold;
+#X text 378 235 pixel <= threshold;
+#X text 427 279 pixel <= threshold set to 0;
+#X text 451 301 pixel >= threshold set to 0;
+#X connect 1 0 2 0;
+#X connect 2 0 4 0;
#X connect 3 0 4 0;
-#X connect 4 0 0 0;
-#X connect 6 0 4 0;
-#X connect 7 0 6 0;
-#X connect 9 0 4 1;
+#X connect 4 0 31 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 31 0;
+#X connect 11 0 10 0;
+#X connect 12 0 11 0;
+#X connect 13 0 31 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 16 0 14 0;
+#X connect 17 0 18 0;
+#X connect 18 0 13 0;
+#X connect 19 0 17 0;
+#X connect 20 0 13 0;
+#X connect 21 0 20 0;
+#X connect 22 0 21 0;
+#X connect 22 0 15 0;
+#X connect 25 0 13 1;
+#X connect 30 0 31 2;
+#X connect 31 0 29 0;
+#X connect 32 0 31 0;
+#X connect 33 0 31 1;
+#X connect 35 0 32 0;
+#X connect 36 0 32 0;
+#X connect 37 0 32 0;
+#X connect 38 0 32 0;
+#X connect 39 0 32 0;
diff --git a/pdp_opencv_threshold.c b/pdp_opencv_threshold.c
index df65782..7773a4a 100644
--- a/pdp_opencv_threshold.c
+++ b/pdp_opencv_threshold.c
@@ -64,7 +64,6 @@ static void pdp_opencv_threshold_process_rgb(t_pdp_opencv_threshold *x)
short int *data = (short int *)pdp_packet_data(x->x_packet0);
t_pdp *newheader = pdp_packet_header(x->x_packet1);
short int *newdata = (short int *)pdp_packet_data(x->x_packet1);
-
if ((x->x_width != (t_int)header->info.image.width) ||
(x->x_height != (t_int)header->info.image.height))
@@ -72,8 +71,6 @@ static void pdp_opencv_threshold_process_rgb(t_pdp_opencv_threshold *x)
post("pdp_opencv_threshold :: resizing plugins");
- //cv_freeplugins(x);
-
x->x_width = header->info.image.width;
x->x_height = header->info.image.height;
x->x_size = x->x_width*x->x_height;
@@ -86,11 +83,8 @@ static void pdp_opencv_threshold_process_rgb(t_pdp_opencv_threshold *x)
x->image = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3);
// Create the output images with new sizes
-
x->gray = cvCreateImage(cvSize(x->image->width,x->image->height), IPL_DEPTH_8U, 1);
- //load the plugins
- //cv_loadplugins(x, FF_PLUGIN_DIR);
}
newheader->info.image.encoding = header->info.image.encoding;
@@ -99,9 +93,6 @@ static void pdp_opencv_threshold_process_rgb(t_pdp_opencv_threshold *x)
memcpy( newdata, data, x->x_size*3 );
- //cv_processframe(x, x->x_plugin, newdata);
-
- // FEM UNA COPIA DEL PACKET A image->imageData ... http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/opencv-intro.html aqui veiem la estructura de IplImage
memcpy( x->image->imageData, data, x->x_size*3 );
// Convert to grayscale
@@ -127,31 +118,24 @@ static void pdp_opencv_threshold_process_rgb(t_pdp_opencv_threshold *x)
}
cvCvtColor(x->gray, x->image, CV_GRAY2BGR);
- //cvShowImage(wndname, cedge);
memcpy( newdata, x->image->imageData, x->x_size*3 );
-
return;
}
-static void pdp_opencv_threshold_param(t_pdp_opencv_threshold *x, t_floatarg f1, t_floatarg f2)
-{
-
-}
-
static void pdp_opencv_threshold_thresh(t_pdp_opencv_threshold *x, t_floatarg f)
{
- x->threshold_value = (int)f;
+ x->threshold_value = (int)f;
}
static void pdp_opencv_threshold_max(t_pdp_opencv_threshold *x, t_floatarg f)
{
- x->max_value = (int)f;
+ x->max_value = (int)f;
}
static void pdp_opencv_threshold_mode(t_pdp_opencv_threshold *x, t_floatarg f)
{
- x->threshold_mode = (int)f;
+ x->threshold_mode = (int)f;
}
static void pdp_opencv_threshold_sendpacket(t_pdp_opencv_threshold *x)
@@ -219,14 +203,13 @@ static void pdp_opencv_threshold_free(t_pdp_opencv_threshold *x)
pdp_packet_mark_unused(x->x_packet0);
//cv_freeplugins(x);
- //Destroy cv_images
- cvReleaseImage(&x->image);
- cvReleaseImage(&x->gray);
+ //Destroy cv_images
+ cvReleaseImage(&x->image);
+ cvReleaseImage(&x->gray);
}
t_class *pdp_opencv_threshold_class;
-
void *pdp_opencv_threshold_new(t_floatarg f)
{
int i;
@@ -247,16 +230,12 @@ void *pdp_opencv_threshold_new(t_floatarg f)
x->x_infosok = 0;
- x->threshold_value = 1;
+ x->threshold_value = 50;
x->max_value = 255;
x->threshold_mode = 0;
-
-
-
x->image = cvCreateImage(cvSize(x->x_width,x->x_height), IPL_DEPTH_8U, 3);
x->gray = cvCreateImage(cvSize(x->image->width,x->image->height), IPL_DEPTH_8U, 1);
- cvCvtColor(x->image, x->gray, CV_BGR2GRAY);
return (void *)x;
}