aboutsummaryrefslogtreecommitdiff
path: root/help/pix_opencv_contours-help.pd
blob: f14f0f817c092f630c81ed57ca39b5d1f383804f (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
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
#N canvas 849 245 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 30 339 Inlet 1: message: area threshold [float];
#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 76 t b a a;
#X obj 487 57 gemhead 1;
#X msg 542 214 epsilon \$1;
#X floatatom 542 197 5 0 0 0 - - -, f 5;
#X obj 625 121 loadbang;
#X obj 541 171 rectangle 5.333 4;
#X obj 514 116 t a a;
#X msg 617 214 area \$1;
#X floatatom 617 197 5 0 0 0 - - -, f 5;
#X msg 659 142 10;
#X msg 625 141 2;
#N canvas 1167 234 474 845 draw_rotrect 0;
#X obj 71 506 GEMglVertex2d;
#X obj 71 586 GEMglVertex2d;
#X obj 71 666 GEMglVertex2d;
#X obj 71 746 GEMglVertex2d;
#X obj 71 766 GEMglEnd;
#X obj 71 277 alpha;
#X obj 143 178 list split 1;
#X obj 71 420 GEMglBegin GL_LINE_LOOP;
#X obj 177 198 list split 8;
#X msg 363 324 0 0 0 0 0 0 0 0;
#X obj 32 -8 inlet INFO;
#X obj 71 256 gemhead;
#X obj 15 147 loadbang;
#X msg 15 168 0;
#X obj 71 52 t b a b;
#X obj 211 504 list split 2;
#X obj 177 448 list split 2;
#X obj 137 472 unpack;
#X obj 211 525 unpack;
#X obj 245 564 list split 2;
#X obj 245 585 unpack;
#X obj 279 664 list split 2;
#X obj 279 685 unpack;
#X obj 90 84 list split 2;
#X obj 95 154 list append;
#X obj 292 81 t b;
#X obj 32 32 route 0;
#X floatatom 342 463 5 0 0 0 - - -, f 5;
#X obj 342 442 list length;
#X obj 71 400 GEMglLineWidth 1;
#X obj 71 327 translateXYZ -5.3333 4 0;
#X obj 71 361 scaleXYZ 10.6666 -8 0;
#X obj 124 107 list split 20;
#X obj 71 302 color 1 1 0 1;
#X obj 124 128 t b b a;
#X obj 32 13 route info;
#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 33 0;
#X connect 6 1 8 0;
#X connect 7 0 0 0;
#X connect 8 0 16 0;
#X connect 9 0 16 0;
#X connect 10 0 35 0;
#X connect 11 0 5 0;
#X connect 12 0 13 0;
#X connect 13 0 11 0;
#X connect 14 1 23 0;
#X connect 14 2 25 0;
#X connect 15 0 18 0;
#X connect 15 1 19 0;
#X connect 16 0 17 0;
#X connect 16 1 15 0;
#X connect 17 0 0 1;
#X connect 17 1 0 2;
#X connect 18 0 1 1;
#X connect 18 1 1 2;
#X connect 19 0 20 0;
#X connect 19 1 21 0;
#X connect 20 0 2 1;
#X connect 20 1 2 2;
#X connect 21 0 22 0;
#X connect 22 0 3 1;
#X connect 22 1 3 2;
#X connect 23 1 32 0;
#X connect 24 0 32 0;
#X connect 25 0 9 0;
#X connect 26 1 14 0;
#X connect 28 0 27 0;
#X connect 29 0 7 0;
#X connect 30 0 31 0;
#X connect 31 0 29 0;
#X connect 32 0 34 0;
#X connect 32 1 24 1;
#X connect 33 0 30 0;
#X connect 34 0 24 0;
#X connect 34 1 11 0;
#X connect 34 2 6 0;
#X connect 34 2 28 0;
#X connect 35 0 26 0;
#X restore 658 323 pd draw_rotrect;
#X obj 487 240 pix_opencv_contours;
#N canvas 955 337 674 695 drawdefects 0;
#X obj 191 301 gemhead;
#X obj 134 217 loadbang;
#X msg 134 238 0;
#X obj 210 116 list split 2;
#X obj 215 186 list append;
#X obj 191 375 scaleXYZ 10.6666 -8 0;
#X obj 244 160 t b b a;
#X obj 210 76 inlet DEFECTS;
#X obj 210 96 route convexitydefects;
#X obj 244 139 list split 7;
#X obj 191 335 color 1 0 0 1;
#X obj 191 355 translateXYZ -5.3333 4 0;
#N canvas 895 575 739 379 ortho_point 0;
#X obj 192 7 inlet;
#X obj 192 57 t a a;
#X obj 204 238 *;
#X obj 174 238 *;
#X obj 114 124 unpack 0 0 0 0;
#X obj 114 279 +;
#X obj 154 279 +;
#X obj 114 340 outlet;
#X obj 174 320 outlet;
#X obj 153 198 -;
#X msg 153 178 1 \$1;
#X obj 144 238 *;
#X obj 114 238 *;
#X obj 219 84 list split 6;
#X text 519 123 dot product;
#X floatatom 244 163 5 0 0 0 - - -, f 5;
#X obj 300 29 t b;
#X msg 343 68 0 1 1 1 0.5 0.5;
#X obj 219 124 expr abs(($f3-$f1)*($f6-$f2)+($f4-$f2)*($f5-$f1));
#X obj 302 158 expr $f1*sqrt(10.666*8);
#X connect 0 0 1 0;
#X connect 1 0 4 0;
#X connect 1 1 13 0;
#X connect 2 0 6 1;
#X connect 3 0 5 1;
#X connect 4 0 12 0;
#X connect 4 1 11 0;
#X connect 4 2 3 0;
#X connect 4 3 2 0;
#X connect 5 0 7 0;
#X connect 6 0 8 0;
#X connect 9 0 11 1;
#X connect 9 0 12 1;
#X connect 10 0 9 0;
#X connect 11 0 6 0;
#X connect 12 0 5 0;
#X connect 13 0 18 0;
#X connect 16 0 17 0;
#X connect 17 0 1 0;
#X connect 18 0 15 0;
#X connect 18 0 19 0;
#X connect 19 0 2 1;
#X connect 19 0 3 1;
#X connect 19 0 10 0;
#X restore 328 515 pd ortho_point;
#X obj 191 475 translateXYZ 10.6666 -8 0;
#X msg 240 451 \$5;
#X msg 289 451 \$6;
#X obj 191 556 circle 0.01;
#X msg 204 530 draw line;
#X obj 204 506 loadbang;
#X obj 354 369 t a;
#X connect 0 0 10 0;
#X connect 1 0 2 0;
#X connect 2 0 0 0;
#X connect 3 1 9 0;
#X connect 4 0 9 0;
#X connect 5 0 13 0;
#X connect 6 0 4 0;
#X connect 6 1 0 0;
#X connect 6 2 19 0;
#X connect 7 0 8 0;
#X connect 8 0 3 0;
#X connect 9 0 6 0;
#X connect 9 1 4 1;
#X connect 10 0 11 0;
#X connect 11 0 5 0;
#X connect 13 0 16 0;
#X connect 14 0 13 1;
#X connect 15 0 13 2;
#X connect 17 0 16 0;
#X connect 18 0 17 0;
#X connect 19 0 15 0;
#X connect 19 0 14 0;
#X restore 542 294 pd drawdefects;
#N canvas 168 587 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 0
1;
#X obj 247 147 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0
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 582 200 enable disable table output (automatically enable when
ou set table);
#X text 569 256 see [pd draw_contour_gemvertexbuffer] for an example
of drawing contours;
#N canvas 789 194 596 300 draw_contour_gemvertexbuffer 0;
#X obj 175 173 loadbang;
#X obj 135 65 translateXYZ -0.5 -0.5 0;
#X obj 135 42 scaleXYZ 10.6666 -8 1;
#X obj 135 87 t a b;
#X obj 135 -9 gemhead 1000;
#X obj 135 17 alpha 0;
#X msg 161 130 posX drawX \, posY drawY \, colorG drawZ \, colorA drawZ
;
#X msg 175 193 draw line;
#X obj 135 245 gemvertexbuffer;
#X obj 161 108 inlet;
#X obj 269 174 r point_number;
#X msg 269 201 resize \$1;
#X floatatom 342 206 5 0 0 0 - - -, f 5;
#X connect 0 0 7 0;
#X connect 1 0 3 0;
#X connect 2 0 1 0;
#X connect 3 0 8 0;
#X connect 3 1 6 0;
#X connect 4 0 5 0;
#X connect 5 0 2 0;
#X connect 6 0 8 0;
#X connect 7 0 8 0;
#X connect 9 0 6 0;
#X connect 10 0 11 0;
#X connect 10 0 12 0;
#X connect 11 0 8 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 379 80 repeat_point \$1;
#X floatatom 379 62 5 0 0 0 - - -, f 5;
#X text 348 47 repeat the first point n times;
#X msg 383 167 cvblobOutput \$1;
#X obj 383 148 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#X text 25 57 -2 for only contours with no child (aka holes);
#X obj 564 89 table drawX 1000;
#X obj 564 109 table drawY 1000;
#X obj 564 129 table drawZ 1000;
#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 connect 0 0 1 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 20 0 19 0;
#X connect 22 0 2 0;
#X connect 23 0 22 0;
#X connect 25 0 2 0;
#X connect 26 0 25 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 630 223 621 734 draw_contours 0;
#X obj 178 132 list split 2;
#X obj 170 593 GEMglEnd;
#X obj 300 590 GEMglVertex2d;
#X obj 212 263 list append;
#X obj 241 237 t b a;
#X obj 241 216 list split 2;
#X obj 341 495 unpack;
#X obj 310 257 t b a;
#X obj -101 364 color 1 0 0 1;
#X obj 405 545 * -8;
#X obj 405 565 + 4;
#X obj -101 422 GEMglLineWidth 2;
#X obj 341 545 * 10.6666;
#X obj 341 565 - 5.33333;
#X obj 170 564 gemlist;
#X obj 300 421 gemlist;
#X obj -62 242 gemhead;
#X obj -62 187 loadbang;
#X msg -62 208 0;
#X obj 133 161 unpack 0 0;
#X floatatom 133 182 5 0 0 0 nb_of_segments - -, f 5;
#X obj 107 -65 inlet CONTOUR;
#X obj -101 334 gemlist;
#X obj 212 159 t b a b b;
#X obj 106 -44 route convexhull contour convexitydefects;
#X obj 187 1 t a b;
#X msg -17 320 0 0 1 1;
#X msg -25 299 0 1 0 1;
#X obj 106 0 t a b;
#X obj 268 1 list split 2;
#X obj 290 96 list append;
#X obj 319 76 t b a;
#X obj 302 28 t b a b b;
#X obj 268 -19 t a b;
#X msg -7 340 1 0 1 1;
#X obj 319 55 list split 7;
#X obj 346 116 list split 4;
#X obj -101 459 GEMglBegin GL_LINE_LOOP;
#X obj -115 -62 inlet;
#X obj -115 -40 t a a a;
#X connect 0 0 19 0;
#X connect 0 1 23 0;
#X connect 2 0 14 1;
#X connect 3 0 5 0;
#X connect 4 0 3 0;
#X connect 4 1 7 0;
#X connect 5 0 4 0;
#X connect 5 1 3 1;
#X connect 6 0 12 0;
#X connect 6 1 9 0;
#X connect 7 0 15 0;
#X connect 7 1 6 0;
#X connect 8 0 11 0;
#X connect 9 0 10 0;
#X connect 10 0 2 2;
#X connect 11 0 37 0;
#X connect 12 0 13 0;
#X connect 13 0 2 1;
#X connect 14 0 1 0;
#X connect 15 0 2 0;
#X connect 17 0 18 0;
#X connect 18 0 16 0;
#X connect 19 0 20 0;
#X connect 21 0 24 0;
#X connect 22 0 8 0;
#X connect 23 0 14 0;
#X connect 23 1 5 0;
#X connect 23 2 22 0;
#X connect 23 3 16 0;
#X connect 24 0 28 0;
#X connect 24 1 25 0;
#X connect 24 2 33 0;
#X connect 25 0 0 0;
#X connect 25 1 27 0;
#X connect 26 0 8 1;
#X connect 27 0 8 1;
#X connect 28 0 0 0;
#X connect 28 1 26 0;
#X connect 29 1 32 0;
#X connect 30 0 35 0;
#X connect 31 0 30 0;
#X connect 31 1 36 0;
#X connect 32 1 35 0;
#X connect 33 0 29 0;
#X connect 33 1 34 0;
#X connect 34 0 8 1;
#X connect 35 0 31 0;
#X connect 35 1 30 1;
#X connect 36 0 23 0;
#X connect 37 0 15 1;
#X connect 38 0 39 0;
#X connect 39 0 22 1;
#X restore 504 513 pd draw_contours;
#N canvas 13 321 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 570 153 list split 20;
#X obj 570 175 t b a;
#X obj 617 222 list;
#X msg 597 259 \$15;
#X obj 597 281 +;
#X obj 625 281 f;
#X msg 620 122 0;
#X obj 582 303 f;
#X obj 551 119 t b a b;
#X floatatom 582 325 5 0 0 0 - - -, f 5;
#X text 445 323 total number of points;
#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 776 195 s point_number;
#X text 723 144 contours;
#X text 797 145 points;
#X text 690 160 total counts of contours and points;
#X connect 5 0 63 0;
#X connect 6 0 22 0;
#X connect 6 1 7 0;
#X connect 6 1 39 0;
#X connect 7 0 42 0;
#X connect 11 0 49 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 48 0;
#X connect 17 0 27 0;
#X connect 17 1 62 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 32 0;
#X connect 31 1 33 1;
#X connect 32 0 33 0;
#X connect 32 1 34 0;
#X connect 33 0 31 0;
#X connect 34 0 35 0;
#X connect 35 0 36 0;
#X connect 35 0 38 1;
#X connect 36 0 35 1;
#X connect 37 0 35 1;
#X connect 38 0 40 0;
#X connect 39 0 38 0;
#X connect 39 1 31 0;
#X connect 39 2 37 0;
#X connect 42 0 44 0;
#X connect 42 1 11 0;
#X connect 48 0 52 0;
#X connect 48 1 17 0;
#X connect 49 0 50 0;
#X connect 49 1 51 0;
#X connect 52 0 53 0;
#X connect 52 1 55 0;
#X connect 62 0 58 0;
#X connect 62 1 59 0;
#X connect 63 0 6 0;
#X connect 63 1 64 0;
#X connect 64 0 65 0;
#X connect 64 1 66 0;
#X connect 64 1 67 0;
#X restore 675 294 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 obj 554 32 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
1;
#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];
#X obj 514 96 pix_image examples/dessin.tif;
#N canvas 865 237 931 731 cvblob 0;
#X obj 87 321 gemlist;
#X obj 87 301 t b a;
#X obj 328 306 list append;
#X obj 323 198 list split 2;
#X obj 323 142 list append;
#X obj 99 108 t b a;
#X obj 357 280 t b a;
#X obj 87 511 translateXYZ;
#X msg 228 354 \$2;
#X obj 87 361 alpha 1;
#X obj 87 471 translateXYZ -0.5 -0.5 0;
#X obj 87 535 scaleXYZ 0.125 0.25 0;
#X msg 267 354 \$3;
#X msg 242 468 \$4;
#X obj 271 333 t a a;
#X obj 87 581 circle 0.5;
#X obj 87 431 color 1 0 0 0.2;
#X obj 87 341 separator;
#X msg 307 504 \$1;
#X obj 87 621 color 1 1 0 1;
#X obj 357 246 list split 6;
#X msg 426 194 \$2;
#X obj 174 627 loadbang;
#X msg 174 646 12;
#X msg 329 382 \$6;
#X obj 329 404 > 0;
#X obj 329 425 sel 1 0;
#X msg 328 446 1 0 0 0.2;
#X msg 348 466 0 1 0 0.2;
#X obj 87 601 translateXYZ 0.2 0.2 0;
#X text 547 280 here is an example on how to display blobs with Gem
;
#X obj 87 451 scaleXYZ 10.666 -8 0;
#X obj 87 682 text2d;
#X text 452 195 <- be careful ! the size of the cvblob matrix could
change;
#X text 534 212 please check second element to gets matrix width (number
of value per blob);
#X obj 323 164 t a a;
#X obj 386 11 inlet cvblob;
#X obj 386 33 route cvblob;
#X obj 240 490 sqrt;
#X obj 99 83 spigot;
#X obj 386 55 t a a;
#X msg 413 77 \$1;
#X floatatom 413 99 5 0 0 0 - - -, f 5;
#X obj 99 19 inlet;
#X connect 0 0 17 0;
#X connect 1 0 0 0;
#X connect 1 1 14 0;
#X connect 2 0 20 0;
#X connect 3 1 20 0;
#X connect 4 0 35 0;
#X connect 5 0 4 0;
#X connect 5 1 0 1;
#X connect 6 0 2 0;
#X connect 6 1 1 0;
#X connect 7 0 11 0;
#X connect 8 0 7 1;
#X connect 9 0 16 0;
#X connect 10 0 7 0;
#X connect 11 0 15 0;
#X connect 12 0 7 2;
#X connect 13 0 38 0;
#X connect 14 0 12 0;
#X connect 14 0 8 0;
#X connect 14 1 13 0;
#X connect 14 1 18 0;
#X connect 14 1 24 0;
#X connect 15 0 29 0;
#X connect 16 0 31 0;
#X connect 17 0 9 0;
#X connect 18 0 32 0;
#X connect 19 0 32 0;
#X connect 20 0 6 0;
#X connect 20 1 2 1;
#X connect 21 0 20 1;
#X connect 22 0 23 0;
#X connect 23 0 32 1;
#X connect 24 0 25 0;
#X connect 25 0 26 0;
#X connect 26 0 27 0;
#X connect 26 1 28 0;
#X connect 27 0 16 1;
#X connect 28 0 16 1;
#X connect 29 0 19 0;
#X connect 31 0 10 0;
#X connect 35 0 3 0;
#X connect 35 1 21 0;
#X connect 36 0 37 0;
#X connect 37 0 40 0;
#X connect 38 0 11 1;
#X connect 38 0 11 2;
#X connect 39 0 5 0;
#X connect 40 0 4 1;
#X connect 40 1 41 0;
#X connect 41 0 42 0;
#X connect 41 0 39 1;
#X connect 43 0 39 0;
#X restore 664 365 pd cvblob;
#X text 506 492 WARNING ! this crashes;
#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 text 612 516 fix me !;
#X obj 487 171 pix_rgba;
#X obj 487 141 pix_video;
#X obj 532 603 declare -lib pix_opencv;
#X connect 13 0 14 0;
#X connect 14 0 13 0;
#X connect 35 0 41 0;
#X connect 36 0 75 0;
#X connect 36 1 67 0;
#X connect 37 0 36 0;
#X connect 38 0 48 0;
#X connect 39 0 38 0;
#X connect 40 0 46 0;
#X connect 40 0 45 0;
#X connect 42 0 75 0;
#X connect 42 1 35 0;
#X connect 43 0 48 0;
#X connect 44 0 43 0;
#X connect 45 0 44 0;
#X connect 46 0 39 0;
#X connect 48 0 68 0;
#X connect 48 1 49 0;
#X connect 48 2 68 1;
#X connect 48 2 47 0;
#X connect 48 2 58 0;
#X connect 50 0 48 0;
#X connect 60 0 37 0;
#X connect 67 0 42 0;
#X connect 74 0 48 0;
#X connect 75 0 74 0;