#N canvas 898 205 901 736 10; #X declare -path ../../; #X obj 17 13 declare -path ../../; #X text -18 0 declare path to be sure externals were found...; #X obj 234 247 gemhead; #X obj 9 588 gemwin; #X obj 234 268 pix_image pattern.png; #X obj 234 290 pix_texture; #X msg 23 555 destroy; #N canvas 973 376 826 658 compute_perspective 0; #N canvas 1 110 450 300 format 0; #X obj 93 7 inlet; #X obj 118 140 outlet; #X msg 108 68 \$1 \$4 0 \$7 \$2 \$5 0 \$8 0 0 1 0 \$3 \$6 0 \$9; #X connect 0 0 2 0; #X connect 2 0 1 0; #X restore 17 474 pd format; #N canvas 1 86 643 318 mapMatrix 0; #X obj 110 263 pack 0 0 0 0 0 0 0 0 0; #X floatatom 110 121 5 0 0 0 - - -; #X floatatom 160 121 5 0 0 0 - - -; #X floatatom 210 121 5 0 0 0 - - -; #X floatatom 110 141 5 0 0 0 - - -; #X floatatom 160 141 5 0 0 0 - - -; #X floatatom 210 141 5 0 0 0 - - -; #X floatatom 110 161 5 0 0 0 - - -; #X floatatom 160 161 5 0 0 0 - - -; #X floatatom 210 161 5 0 0 0 - - -; #X obj 110 285 outlet; #X obj 110 29 inlet; #X obj 110 59 unpack 0 0 0 0 0 0 0 0 0; #X obj 146 195 t b f; #X obj 189 196 t b f; #X obj 231 196 t b f; #X obj 273 195 t b f; #X obj 316 195 t b f; #X obj 362 195 t b f; #X obj 406 195 t b f; #X obj 456 195 t b f; #X connect 0 0 10 0; #X connect 1 0 0 0; #X connect 2 0 13 0; #X connect 3 0 14 0; #X connect 4 0 15 0; #X connect 5 0 16 0; #X connect 6 0 17 0; #X connect 7 0 18 0; #X connect 8 0 19 0; #X connect 9 0 20 0; #X connect 11 0 12 0; #X connect 12 0 1 0; #X connect 12 1 2 0; #X connect 12 2 3 0; #X connect 12 3 4 0; #X connect 12 4 5 0; #X connect 12 5 6 0; #X connect 12 6 7 0; #X connect 12 7 8 0; #X connect 12 8 9 0; #X connect 13 0 0 0; #X connect 13 1 0 1; #X connect 14 0 0 0; #X connect 14 1 0 2; #X connect 15 0 0 0; #X connect 15 1 0 3; #X connect 16 0 0 0; #X connect 16 1 0 4; #X connect 17 0 0 0; #X connect 17 1 0 5; #X connect 18 0 0 0; #X connect 18 1 0 6; #X connect 19 0 0 0; #X connect 19 1 0 7; #X connect 20 0 0 0; #X connect 20 1 0 8; #X coords 0 -1 1 1 150 80 1 100 100; #X restore 17 391 pd mapMatrix; #X obj -136 371 pix_opencv_warpperspective; #X text 76 473 <-- transform into a 4x4; #X text 101 483 openGL transpose matrix; #X obj -137 194 loadbang; #X obj 101 101 cnv 15 240 60 empty empty VP_calib 20 12 0 14 -262130 -66577 0; #X floatatom 253 124 5 0 0 0 - - -; #X floatatom 293 124 5 0 0 0 - - -; #X floatatom 253 144 5 0 0 0 - - -; #X floatatom 293 144 5 0 0 0 - - -; #X floatatom 111 124 5 0 0 0 - - -; #X floatatom 151 124 5 0 0 0 - - -; #X floatatom 111 144 5 0 0 0 - - -; #X floatatom 151 144 5 0 0 0 - - -; #X text 206 124 VP 1; #X obj 139 -12 unpack 0 0 0 0 0 0 0 0; #X obj 139 -52 loadbang; #X obj 74 258 pack 0 0 0 0 0 0 0 0; #X obj 74 217 t b f; #X obj 110 217 t b f; #X obj 146 217 t b f; #X obj 182 217 t b f; #X obj 218 217 t b f; #X obj 254 217 t b f; #X obj 290 217 t b f; #X msg 74 280 dstMatrix \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; #X obj 17 496 outlet; #X obj -136 497 outlet; #X obj -123 -47 inlet; #X msg 115 61 -1 1 1 1 -1 -1 1 -1; #X msg -122 256 srcMatrix -4 3 4 3 -4 -3 4 -3; #X msg -130 235 srcMatrix -1 1 1 1 -1 -1 1 -1; #X msg -136 214 srcMatrix -1 1 1 1 -1 -1 1 -1; #X obj -125 338 pix_buf; #X obj 74 302 t b a; #X obj 201 107 bng 15 250 50 0 empty empty reset 17 7 0 10 -262144 -1 -1; #X obj -123 -25 pix_info ______________; #X obj -11 7 * -1; #X obj 39 7 * -1; #X obj -123 -2 t a b; #X obj -96 27 spigot; #X obj -118 123 spigot; #X obj 43 -47 inlet; #X obj 43 -23 == 0; #X obj -96 72 pack -1 0 0 0 0 0 0 0 0; #X obj -96 92 route -1; #X msg -96 153 srcMatrix \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; #X msg 124 330 invert \$1; #X obj 124 310 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg -96 49 -1; #X msg 139 -31 -1 1 1 1 -1 -1 1 -1; #X obj 88 37 t b b; #X obj 88 15 sel 1 0; #X msg -67 118 set \$1 \$2 \$3 \$4 \$5 \$6 \$7 \$8; #X connect 0 0 27 0; #X connect 1 0 0 0; #X connect 2 0 28 0; #X connect 2 1 1 0; #X connect 5 0 33 0; #X connect 7 0 20 0; #X connect 8 0 21 0; #X connect 9 0 24 0; #X connect 10 0 25 0; #X connect 11 0 18 0; #X connect 12 0 19 0; #X connect 13 0 22 0; #X connect 14 0 23 0; #X connect 16 0 11 0; #X connect 16 1 12 0; #X connect 16 2 7 0; #X connect 16 3 8 0; #X connect 16 4 13 0; #X connect 16 5 14 0; #X connect 16 6 9 0; #X connect 16 7 10 0; #X connect 17 0 51 0; #X connect 18 0 26 0; #X connect 19 0 18 0; #X connect 19 1 18 1; #X connect 20 0 18 0; #X connect 20 1 18 2; #X connect 21 0 18 0; #X connect 21 1 18 3; #X connect 22 0 18 0; #X connect 22 1 18 4; #X connect 23 0 18 0; #X connect 23 1 18 5; #X connect 24 0 18 0; #X connect 24 1 18 6; #X connect 25 0 18 0; #X connect 25 1 18 7; #X connect 26 0 35 0; #X connect 29 0 37 0; #X connect 30 0 54 0; #X connect 33 0 2 0; #X connect 34 0 2 0; #X connect 35 0 34 0; #X connect 35 1 2 0; #X connect 36 0 51 0; #X connect 37 0 40 0; #X connect 37 1 38 0; #X connect 37 1 45 3; #X connect 37 1 45 7; #X connect 37 2 39 0; #X connect 37 2 45 2; #X connect 37 2 45 4; #X connect 38 0 45 1; #X connect 38 0 45 5; #X connect 39 0 45 6; #X connect 39 0 45 8; #X connect 40 0 34 0; #X connect 40 1 41 0; #X connect 40 1 42 0; #X connect 41 0 50 0; #X connect 42 0 33 0; #X connect 43 0 44 0; #X connect 43 0 42 1; #X connect 43 0 53 0; #X connect 44 0 41 1; #X connect 45 0 46 0; #X connect 46 0 47 0; #X connect 46 0 54 0; #X connect 47 0 2 0; #X connect 48 0 2 0; #X connect 49 0 48 0; #X connect 50 0 45 0; #X connect 51 0 16 0; #X connect 52 0 51 0; #X connect 52 1 33 0; #X connect 52 1 30 0; #X connect 53 0 52 0; #X connect 54 0 51 0; #X coords 0 -1 1 1 242 62 2 100 100; #X restore 144 155 pd compute_perspective; #X msg 9 527 color 0 0 1 1 \, dimen 640 480 \, create \, 1; #X obj 144 295 pix_texture; #X obj 144 87 gemhead; #X obj 144 66 == 0; #X obj 234 24 vradio 15 1 0 2 empty empty empty 0 -8 0 10 -262144 -1 -1 1; #X obj 144 108 pix_image pattern.png; #X obj 144 130 pix_rgba; #X obj 234 -36 loadbang; #X msg 234 -14 1; #X text 249 24 CPU; #X text 249 38 GPU; #X obj 234 405 square 1 1; #X obj 144 359 rectangle 1 1; #X obj 144 324 scaleXYZ 4 3 1; #X obj 234 353 GEMglMultTransposeMatrixf; #X text 375 62 This demonstrates how to use pix_opencv_warpperspective to compute perspective transformation and to apply it with OpenGL; #X text 403 130 Very useful to quickly setup video projector; #X obj 234 332 scaleXYZ 1 1 1; #X obj 234 379 scaleXYZ 1 1 0; #X connect 2 0 4 0; #X connect 4 0 5 0; #X connect 5 0 25 0; #X connect 6 0 3 0; #X connect 7 0 9 0; #X connect 7 1 22 1; #X connect 8 0 3 0; #X connect 9 0 21 0; #X connect 10 0 13 0; #X connect 11 0 10 0; #X connect 12 0 2 0; #X connect 12 0 11 0; #X connect 12 0 7 1; #X connect 13 0 14 0; #X connect 14 0 7 0; #X connect 15 0 16 0; #X connect 16 0 12 0; #X connect 21 0 20 0; #X connect 22 0 26 0; #X connect 25 0 22 0; #X connect 26 0 19 0;