aboutsummaryrefslogtreecommitdiff
path: root/help/pix_opencv_contours-help.pd
blob: 0abf6a772753de61a44f82a96f8546a4124b042b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
#N canvas 408 133 794 766 10;
#X declare -lib pix_opencv;
#X obj 472 35 cnv 15 300 500 empty empty empty 20 12 0 14 -228992 -66577
0;
#X obj 11 56 cnv 15 450 200 empty empty empty 20 12 0 14 -233017 -66577
0;
#X obj 11 307 cnv 15 450 380 empty empty empty 20 12 0 14 -233017 -66577
0;
#X text 13 315 Inlets:;
#X obj 11 267 cnv 15 450 30 empty empty empty 20 12 0 14 -195568 -66577
0;
#X text 20 266 Arguments:;
#X text 12 436 Outlets:;
#X text 478 20 Example:;
#X text 58 21 Class: pix_opencv;
#X text 11 60 Description: finds contours;
#X text 66 276 none;
#X text 30 349 Inlet 1: message: epsilon [float];
#X obj 353 315 cnv 15 100 60 empty empty empty 20 12 0 14 -195568 -66577
0;
#N canvas 1 122 450 300 gemwin 0;
#X obj 132 156 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 198 112 destroy;
#X msg 132 132 reset \, dimen 640 480 \, create \, 1;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 3 0 7 0;
#X connect 3 1 5 0;
#X connect 3 1 6 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 restore 358 354 pd gemwin;
#X msg 358 335 destroy;
#X text 354 314 Create window:;
#X text 30 329 Inlet 1: binarized image;
#X text 30 589 <number of segments> <2> <x \, y corner coordinate pairs>
;
#X text 25 447 Outlet 1: gemlist output;
#X text 37 5 Synopsis: [pix_opencv_contours];
#X text 21 578 contour (for each of them);
#X text 37 75 [pix_opencv_contours] finds contours in incomming image
\, simplifies it according to the epsilon value and outputs contours
with area greater than a threshold.;
#X text 25 457 Outlet 2: contour \, convexhull and convexity defect
output;
#X text 37 126 contrary to [pix_opencv_contour_convexhull] \, [pix_opencv_contours]
outputs all contours found not only the biggest.;
#X text 37 175 it can also output rotated bounding rectangle \, convexhull
and cenvexity defects;
#X text 37 215 you can choose the hierarchy level of output contour
;
#X text 37 235 so this external replaces all old pix_opencv_contours_*
;
#X text 30 619 <number of segments> <2> <x \, y corner coordinate pairs>
;
#X text 21 606 convexhull (for each contour);
#X text 20 637 convexixitydefects (for each contour);
#X text 30 649 <number of segments> <7> <start point (2 floats)> <end
point (2 floats)> <depth point (2 floats)> depth;
#X text 26 699 by antoine villeret - 2012;
#X text 16 719 bug \, feedback \, comment... on the pd-list;
#X obj 476 193 cnv 15 280 80 empty empty empty 20 12 0 14 -4034 -66577
0;
#X obj 541 151 pix_texture;
#X obj 487 74 t b a a;
#X obj 487 55 gemhead 1;
#X msg 542 214 epsilon \$1;
#X obj 541 171 rectangle 5.333 4;
#X obj 514 116 t a a;
#X msg 617 214 area \$1;
#X obj 487 240 pix_opencv_contours;
#N canvas 571 659 1126 291 options 0;
#X obj 57 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X msg 57 167 contours \$1;
#X obj 57 251 outlet;
#X obj 147 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X msg 147 167 convexhulls \$1;
#X msg 247 167 convexitydefects \$1;
#X text 25 37 set hierarchy level (which contour to send out);
#X obj 24 83 nbx 5 14 -2 1e+37 0 1 empty empty empty 0 -8 0 10 -262144
-1 -1 -1 256;
#X msg 24 100 hierarchy_level \$1;
#X text 71 125 send out different kind of infos (all on by default)
:;
#X text 25 47 -1 for all contours (default);
#X msg 559 168 settab drawX drawY drawZ;
#X obj 558 200 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X msg 558 229 taboutput \$1;
#X text 550 71 first set some tables (they are dynamically resized)
;
#X text 550 151 tell it what tables to use;
#X text 569 256 see [pd draw_contour_gemvertexbuffer] for an example
of drawing contours;
#N canvas 682 180 596 318 draw_contour_gemvertexbuffer 0;
#X obj 175 193 loadbang;
#X obj 135 85 translateXYZ -0.5 -0.5 0;
#X obj 135 62 scaleXYZ 10.6666 -8 1;
#X obj 135 107 t a b;
#X obj 135 11 gemhead 1000;
#X msg 161 150 posX drawX \, posY drawY \, colorG drawZ \, colorA drawZ
;
#X obj 135 265 gemvertexbuffer;
#X obj 161 128 inlet;
#X obj 269 194 r point_number;
#X msg 269 221 resize \$1;
#X floatatom 342 226 5 0 0 0 - - -, f 5;
#X obj 135 -12 r draw_contours;
#X msg 175 214 draw lineloop;
#X obj 135 35 alpha;
#X connect 0 0 12 0;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 6 0;
#X connect 3 1 5 0;
#X connect 4 0 13 0;
#X connect 5 0 6 0;
#X connect 7 0 5 0;
#X connect 8 0 9 0;
#X connect 8 0 10 0;
#X connect 9 0 6 0;
#X connect 11 0 4 0;
#X connect 12 0 6 0;
#X connect 13 0 2 0;
#X restore 797 147 pd draw_contour_gemvertexbuffer;
#X obj 797 126 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
-1 -1;
#X text 813 127 draw with gemvertexbuffer;
#X msg 383 167 cvblobOutput \$1;
#X obj 383 148 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X text 25 57 -2 for only contours with no child (aka holes);
#X text 543 5 to improve performance and avoid "stack overflow" (because
contours could have a huge number of points) you can use table output
instead of list output;
#X text 582 200 enable/disable table output (automatically enable when
you set tables);
#X obj 373 188 s draw_cvblob;
#X obj 47 187 s draw_contours;
#X obj 564 89 table drawX 10000;
#X obj 564 109 table drawY 10000;
#X obj 564 129 table drawZ 10000;
#X connect 0 0 1 0;
#X connect 0 0 27 0;
#X connect 1 0 2 0;
#X connect 3 0 5 0;
#X connect 4 0 6 0;
#X connect 5 0 2 0;
#X connect 6 0 2 0;
#X connect 8 0 9 0;
#X connect 9 0 2 0;
#X connect 12 0 2 0;
#X connect 13 0 14 0;
#X connect 14 0 2 0;
#X connect 19 0 18 0;
#X connect 21 0 2 0;
#X connect 22 0 21 0;
#X connect 22 0 26 0;
#X restore 674 213 pd options;
#X text 489 347 color legend :;
#X text 522 364 yellow = bounding box;
#X text 528 374 green = contour;
#X text 534 385 blue = convexhull;
#X text 534 397 pink = convexhull edge with defects;
#X text 540 409 red = farthest point from convexhull;
#N canvas 927 173 981 904 draw_contours 0;
#X obj 43 253 list split 2;
#X obj 111 820 GEMglVertex2d;
#X obj 13 661 list append;
#X obj 42 635 t b a;
#X obj 42 614 list split 2;
#X obj 142 746 unpack;
#X obj 111 679 t b a;
#X obj 102 500 color 1 0 0 1;
#X obj 206 773 * -8;
#X obj 206 793 + 4;
#X obj 102 528 GEMglLineWidth 2;
#X obj 142 773 * 10.6666;
#X obj 142 793 - 5.33333;
#X obj 111 701 gemlist;
#X obj 23 414 gemhead;
#X obj 23 349 loadbang;
#X msg 23 374 0;
#X obj 26 62 inlet CONTOUR;
#X obj 26 106 route convexhull contour convexitydefects;
#X msg 53 171 0 0 1 1;
#X msg 134 192 0 1 0 1;
#X obj 249 155 list split 2;
#X obj 271 250 list append;
#X obj 300 230 t b a;
#X obj 188 131 t a b;
#X obj 300 209 list split 7;
#X obj 327 270 list split 4;
#X obj 107 151 t a b;
#X obj 26 150 t a b;
#X obj 215 239 t a;
#X obj 486 531 gemhead;
#X obj 486 605 scaleXYZ 10.6666 -8 0;
#X obj 467 429 t b b a;
#X obj 486 565 color 1 0 0 1;
#X obj 486 585 translateXYZ -5.3333 4 0;
#X obj 486 705 translateXYZ 10.6666 -8 0;
#X obj 486 786 circle 0.01;
#X msg 499 760 draw line;
#X obj 499 736 loadbang;
#X obj 693 605 t a;
#X msg 535 681 \$1;
#X msg 584 681 \$2;
#X obj 425 473 loadbang;
#X msg 425 495 0;
#X msg 215 188 1 0 1 1;
#X obj 23 446 t a b a;
#X obj 42 485 list;
#X obj 77 369 t b a;
#X obj 23 567 GEMglEnd;
#X obj 102 552 GEMglBegin GL_LINE_LOOP;
#X connect 0 1 47 0;
#X connect 2 0 4 0;
#X connect 3 0 2 0;
#X connect 3 1 6 0;
#X connect 4 0 3 0;
#X connect 4 1 2 1;
#X connect 5 0 11 0;
#X connect 5 1 8 0;
#X connect 6 0 13 0;
#X connect 6 1 5 0;
#X connect 7 0 10 0;
#X connect 8 0 9 0;
#X connect 9 0 1 2;
#X connect 10 0 49 0;
#X connect 11 0 12 0;
#X connect 12 0 1 1;
#X connect 13 0 1 0;
#X connect 14 0 45 0;
#X connect 15 0 16 0;
#X connect 16 0 14 0;
#X connect 17 0 18 0;
#X connect 18 0 28 0;
#X connect 18 1 27 0;
#X connect 18 2 24 0;
#X connect 19 0 29 0;
#X connect 20 0 29 0;
#X connect 21 1 25 0;
#X connect 22 0 25 0;
#X connect 23 0 22 0;
#X connect 23 1 26 0;
#X connect 24 0 21 0;
#X connect 24 1 44 0;
#X connect 25 0 23 0;
#X connect 25 1 22 1;
#X connect 26 0 47 0;
#X connect 26 1 32 0;
#X connect 27 0 0 0;
#X connect 27 1 20 0;
#X connect 28 0 0 0;
#X connect 28 1 19 0;
#X connect 29 0 7 1;
#X connect 30 0 33 0;
#X connect 31 0 35 0;
#X connect 32 1 30 0;
#X connect 32 2 39 0;
#X connect 33 0 34 0;
#X connect 34 0 31 0;
#X connect 35 0 36 0;
#X connect 37 0 36 0;
#X connect 38 0 37 0;
#X connect 39 0 41 0;
#X connect 39 0 40 0;
#X connect 40 0 35 1;
#X connect 41 0 35 2;
#X connect 42 0 43 0;
#X connect 43 0 30 0;
#X connect 44 0 29 0;
#X connect 45 0 48 0;
#X connect 45 1 46 0;
#X connect 45 2 7 0;
#X connect 46 0 4 0;
#X connect 47 0 14 0;
#X connect 47 1 46 1;
#X restore 542 323 pd draw_contours;
#N canvas 154 308 1198 730 info 0;
#X obj -67 115 cnv 15 250 40 empty empty empty 20 12 0 14 -4034 -66577
0;
#X obj -68 292 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577
0;
#X obj 14 332 cnv 15 300 20 empty empty empty 20 12 0 14 -4034 -66577
0;
#X obj 282 -59 cnv 15 100 40 empty empty empty 20 12 0 14 -4034 -66577
0;
#X obj 51 497 cnv 15 330 50 empty empty empty 20 12 0 14 -4034 -66577
0;
#X obj 225 16 inlet;
#X obj 225 67 list split 2;
#X obj 259 137 list split 20;
#X text 309 70 cut matrix header;
#X text 346 98 cut infos for the 1st contour;
#X text -55 294 rotated rectangle center point (normalized);
#X obj 211 224 list split 2;
#X obj 245 314 unpack;
#X floatatom 245 334 5 0 0 0 - - -, f 5;
#X floatatom 278 334 5 0 0 0 - - -, f 5;
#X obj 245 244 list split 2;
#X text 29 334 rotated rectangle size (normalized);
#X obj 313 384 list split 8;
#X floatatom 304 -37 5 0 0 0 - - -, f 5;
#X obj 304 -18 * 20;
#X obj 304 4 + 2;
#X text 284 -55 selected contour;
#X obj 116 96 unpack;
#X floatatom 116 117 5 0 0 0 - - -, f 5;
#X floatatom 149 138 5 0 0 0 - - -, f 5;
#X text -52 114 number of detected contours;
#X text -61 137 numbers of values for each contour;
#X obj 313 404 list prepend set;
#X obj 313 424 list trim;
#X msg 54 513 0.681584 0.808552 0.679688 0.789583 0.704353 0.785198
0.70625 0.804167;
#X text 59 495 rotrect corners coordinates;
#X obj 177 194 list split 1;
#X obj -140 220 cnv 15 350 20 empty empty empty 20 12 0 14 -4034 -66577
0;
#X floatatom 177 223 5 0 0 0 - - -, f 5;
#X text 24 223 id in the detection order;
#X obj 26 405 cnv 15 250 20 empty empty empty 20 12 0 14 -4034 -66577
0;
#X text 30 408 rotated rectangle angle (degrees);
#X obj 279 364 list split 2;
#X obj 211 274 unpack;
#X floatatom 211 294 5 0 0 0 - - -, f 5;
#X floatatom 244 294 5 0 0 0 - - -, f 5;
#X obj 240 387 unpack;
#X floatatom 240 407 5 0 0 0 - - -, f 5;
#X obj 26 435 cnv 15 250 20 empty empty empty 20 12 0 14 -4034 -66577
0;
#X floatatom 240 437 5 0 0 0 - - -, f 5;
#X text 30 438 area in % of image area;
#X obj 199 570 cnv 15 250 80 empty empty empty 20 12 0 14 -4034 -66577
0;
#X floatatom 347 595 5 0 0 0 - - -, f 5;
#X floatatom 381 615 5 0 0 0 - - -, f 5;
#X text 203 614 length of contour (in pixels);
#X text 247 595 number of points;
#X obj 347 575 unpack f f;
#X obj 225 38 route cvblob count;
#X obj 736 107 unpack f f;
#X floatatom 736 129 5 0 0 0 - - -, f 5;
#X floatatom 793 130 5 0 0 0 - - -, f 5;
#X obj 794 250 s point_number;
#X text 723 144 contours;
#X text 797 145 points;
#X text 690 160 total counts of contours and points;
#X text 9 -35 activate cvblob output before trying this !;
#X obj 794 197 + 3;
#X connect 5 0 52 0;
#X connect 6 0 22 0;
#X connect 6 1 7 0;
#X connect 7 0 31 0;
#X connect 11 0 38 0;
#X connect 11 1 15 0;
#X connect 12 0 13 0;
#X connect 12 1 14 0;
#X connect 15 0 12 0;
#X connect 15 1 37 0;
#X connect 17 0 27 0;
#X connect 17 1 51 0;
#X connect 18 0 19 0;
#X connect 19 0 20 0;
#X connect 20 0 6 1;
#X connect 22 0 23 0;
#X connect 22 1 24 0;
#X connect 22 1 19 1;
#X connect 22 1 7 1;
#X connect 27 0 28 0;
#X connect 28 0 29 0;
#X connect 31 0 33 0;
#X connect 31 1 11 0;
#X connect 37 0 41 0;
#X connect 37 1 17 0;
#X connect 38 0 39 0;
#X connect 38 1 40 0;
#X connect 41 0 42 0;
#X connect 41 1 44 0;
#X connect 51 0 47 0;
#X connect 51 1 48 0;
#X connect 52 0 6 0;
#X connect 52 1 53 0;
#X connect 53 0 54 0;
#X connect 53 1 55 0;
#X connect 55 0 61 0;
#X connect 61 0 56 0;
#X restore 672 295 pd info;
#X text 29 498 <num of contour> 20 <contour area> <rotrect corners
coordinates (8 floats)> <rotrect center position (2 floats)> <rotrect
size (2 floats)> <angle in degrees> <number of points> <contour length>
0 0 0 0;
#X text 30 369 Inlet 1: message: contours <0|1>;
#X text 30 379 Inlet 1: message: convexhull <0|1>;
#X text 30 389 Inlet 1: message: convexitydefects <0|1>;
#X text 30 399 Inlet 1: message: settab tabname1 tabname2 tabname3
;
#X text 30 409 Inlet 1: message: taboutput <0|1>;
#X text 30 359 Inlet 1: message: hierarchy_level [float];
#N canvas 230 125 955 706 cvblob 0;
#X obj 328 216 list append;
#X obj 323 148 list split 2;
#X obj 357 190 t b a;
#X obj 357 169 list split 6;
#X msg 426 144 \$2;
#X obj 323 114 t a a;
#X obj 323 71 inlet cvblob;
#X obj 323 93 route cvblob;
#N canvas 65 87 922 824 drawrotrec 0;
#X obj 341 569 GEMglVertex2d;
#X obj 341 619 GEMglVertex2d;
#X obj 341 689 GEMglVertex2d;
#X obj 341 729 GEMglVertex2d;
#X obj 341 749 GEMglEnd;
#X obj 341 340 alpha;
#X obj 341 483 GEMglBegin GL_LINE_LOOP;
#X obj 447 261 list split 8;
#X msg 562 391 0 0 0 0 0 0 0 0;
#X obj 341 319 gemhead;
#X obj 285 210 loadbang;
#X msg 285 231 0;
#X obj 341 117 t b a b;
#X obj 481 537 list split 2;
#X obj 447 511 list split 2;
#X obj 407 535 unpack;
#X obj 481 558 unpack;
#X obj 515 587 list split 2;
#X obj 515 608 unpack;
#X obj 549 637 list split 2;
#X obj 549 658 unpack;
#X obj 562 184 t b;
#X floatatom 612 526 5 0 0 0 - - -, f 5;
#X obj 612 505 list length;
#X obj 341 463 GEMglLineWidth 1;
#X obj 341 390 translateXYZ -5.3333 4 0;
#X obj 341 424 scaleXYZ 10.6666 -8 0;
#X obj 341 365 color 1 1 0 1;
#X obj 413 234 list split 7;
#X obj 341 91 inlet;
#X connect 0 0 1 0;
#X connect 1 0 2 0;
#X connect 2 0 3 0;
#X connect 3 0 4 0;
#X connect 5 0 27 0;
#X connect 6 0 0 0;
#X connect 7 0 14 0;
#X connect 8 0 14 0;
#X connect 9 0 5 0;
#X connect 10 0 11 0;
#X connect 11 0 9 0;
#X connect 12 0 9 0;
#X connect 12 1 28 0;
#X connect 12 2 21 0;
#X connect 13 0 16 0;
#X connect 13 1 17 0;
#X connect 14 0 15 0;
#X connect 14 1 13 0;
#X connect 15 0 0 1;
#X connect 15 1 0 2;
#X connect 16 0 1 1;
#X connect 16 1 1 2;
#X connect 17 0 18 0;
#X connect 17 1 19 0;
#X connect 18 0 2 1;
#X connect 18 1 2 2;
#X connect 19 0 20 0;
#X connect 20 0 3 1;
#X connect 20 1 3 2;
#X connect 21 0 8 0;
#X connect 23 0 22 0;
#X connect 24 0 6 0;
#X connect 25 0 26 0;
#X connect 26 0 24 0;
#X connect 27 0 25 0;
#X connect 28 1 7 0;
#X connect 29 0 12 0;
#X restore 474 353 pd drawrotrec;
#X text 452 145 <- size of each blob data;
#X floatatom 437 171 5 0 0 0 - - -, f 5;
#X text 405 193 split blobs;
#N canvas 65 82 450 542 draw_potatoe 0;
#X obj 90 108 t b a;
#X obj 90 318 translateXYZ;
#X msg 231 161 \$2;
#X obj 90 168 alpha 1;
#X obj 90 278 translateXYZ -0.5 -0.5 0;
#X obj 90 342 scaleXYZ 0.125 0.25 0;
#X msg 270 161 \$3;
#X msg 245 255 \$4;
#X obj 274 140 t a a;
#X obj 90 388 circle 0.5;
#X obj 90 238 color 1 0 0 0.2;
#X obj 90 148 separator;
#X msg 310 311 \$1;
#X obj 90 428 color 1 1 0 1;
#X obj 177 434 loadbang;
#X msg 177 453 12;
#X msg 332 189 \$6;
#X obj 332 211 > 0;
#X obj 332 232 sel 1 0;
#X msg 331 253 1 0 0 0.2;
#X msg 351 273 0 1 0 0.2;
#X obj 90 408 translateXYZ 0.2 0.2 0;
#X obj 90 258 scaleXYZ 10.666 -8 0;
#X obj 90 489 text2d;
#X obj 245 277 sqrt;
#X obj 245 299 / 2;
#X obj 90 128 gemhead;
#X obj 57 65 loadbang;
#X msg 57 87 0;
#X obj 90 88 inlet;
#X connect 0 0 26 0;
#X connect 0 1 8 0;
#X connect 1 0 5 0;
#X connect 2 0 1 1;
#X connect 3 0 10 0;
#X connect 4 0 1 0;
#X connect 5 0 9 0;
#X connect 6 0 1 2;
#X connect 7 0 24 0;
#X connect 8 0 6 0;
#X connect 8 0 2 0;
#X connect 8 1 7 0;
#X connect 8 1 12 0;
#X connect 8 1 16 0;
#X connect 9 0 21 0;
#X connect 10 0 22 0;
#X connect 11 0 3 0;
#X connect 12 0 23 0;
#X connect 13 0 23 0;
#X connect 14 0 15 0;
#X connect 15 0 23 1;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
#X connect 18 0 19 0;
#X connect 18 1 20 0;
#X connect 19 0 10 1;
#X connect 20 0 10 1;
#X connect 21 0 13 0;
#X connect 22 0 4 0;
#X connect 24 0 25 0;
#X connect 25 0 5 1;
#X connect 25 0 5 2;
#X connect 26 0 11 0;
#X connect 27 0 28 0;
#X connect 28 0 26 0;
#X connect 29 0 0 0;
#X restore 362 355 pd draw_potatoe;
#X connect 0 0 3 0;
#X connect 1 1 3 0;
#X connect 2 0 0 0;
#X connect 2 1 8 0;
#X connect 2 1 12 0;
#X connect 3 0 2 0;
#X connect 3 1 0 1;
#X connect 4 0 3 1;
#X connect 4 0 10 0;
#X connect 5 0 1 0;
#X connect 5 1 4 0;
#X connect 6 0 7 0;
#X connect 7 0 5 0;
#X restore 598 295 pd cvblob;
#X text 20 488 cvblob;
#X text 25 467 Outlet 3: info output;
#X text 20 558 count <number of contour> <total number of point>;
#X obj 504 730 declare -lib pix_opencv;
#X obj 487 141 pix_buf;
#X obj 542 196 nbx 5 14 0 1e+37 0 1 empty empty empty 0 -8 0 10 -262144
-1 -1 2 256;
#X obj 617 196 nbx 5 14 0 1e+37 0 1 empty empty empty 0 -8 0 10 -262144
-1 -1 10 256;
#X obj 487 171 pix_gray;
#X text 30 339 Inlet 1: message: area [float];
#X obj 514 96 pix_image examples/dessin.tif;
#X connect 13 0 14 0;
#X connect 14 0 13 0;
#X connect 34 0 38 0;
#X connect 35 0 63 0;
#X connect 35 1 68 0;
#X connect 36 0 35 0;
#X connect 37 0 41 0;
#X connect 39 0 63 0;
#X connect 39 1 34 0;
#X connect 40 0 41 0;
#X connect 41 1 49 0;
#X connect 41 2 58 0;
#X connect 41 2 50 0;
#X connect 42 0 41 0;
#X connect 63 0 66 0;
#X connect 64 0 37 0;
#X connect 65 0 40 0;
#X connect 66 0 41 0;
#X connect 68 0 39 0;