From 15ec89b8acb5e2fb3f41b45cc37fd3c585bdb38b Mon Sep 17 00:00:00 2001 From: "N.N." Date: Tue, 3 Aug 2010 17:10:32 +0000 Subject: a few fixes for opencv 2.0 svn path=/trunk/externals/pix_opencv/; revision=13743 --- pix_opencv_contours_convexity-help.pd | 187 ++++++++++------------------------ pix_opencv_distrans.cc | 41 +++----- pix_opencv_distrans.h | 2 +- pix_opencv_floodfill-help.pd | 86 ++++++++-------- pix_opencv_laplace.cc | 108 +++++++++----------- pix_opencv_laplace.h | 2 +- pix_opencv_morphology.cc | 83 +++++++-------- pix_opencv_morphology.h | 2 +- pix_opencv_motempl.cc | 80 +++++++-------- pix_opencv_motempl.h | 2 +- pix_opencv_of_bm-help.pd | 22 ++-- pix_opencv_of_hs-help.pd | 44 ++++---- pix_opencv_of_lk-help.pd | 38 +++---- 13 files changed, 293 insertions(+), 404 deletions(-) diff --git a/pix_opencv_contours_convexity-help.pd b/pix_opencv_contours_convexity-help.pd index 46c20bf..8af1aef 100644 --- a/pix_opencv_contours_convexity-help.pd +++ b/pix_opencv_contours_convexity-help.pd @@ -1,15 +1,8 @@ -#N canvas 210 25 1257 664 10; +#N canvas 179 49 1257 664 10; #X obj 598 605 cnv 15 255 67 empty empty empty 20 12 0 14 -24198 -66577 0; #X obj 616 648 pix_opencv_contours_convexity; -#X floatatom 782 842 5 0 0 0 - - -; -#X floatatom 981 998 5 0 0 0 - - -; -#X floatatom 884 841 5 0 0 0 - - -; -#X floatatom 1066 1002 5 0 0 0 - - -; -#X floatatom 939 843 5 0 0 0 - - -; -#X floatatom 1126 1003 5 0 0 0 - - -; -#X floatatom 1030 844 5 0 0 0 - - -; -#X floatatom 1203 1004 5 0 0 0 - - -; +#X floatatom 804 807 5 0 0 0 - - -; #X floatatom 1767 815 5 0 0 0 - - -; #X floatatom 1801 815 5 0 0 0 - - -; #X text 1775 834 Depth point (X -Y); @@ -61,7 +54,7 @@ be analyzed..; #X connect 10 0 7 0; #X connect 10 2 9 0; #X restore 63 104 pd gemwin; -#X msg 63 86 destroy; +#X msg 63 86 create; #X obj 464 858 pix_texture; #X obj 464 886 square 2; #X obj 616 391 separator; @@ -114,7 +107,7 @@ be analyzed..; #X connect 11 1 9 0; #X connect 11 1 6 0; #X restore 557 319 pd vswitch; -#X obj 625 319 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 1 +#X obj 625 319 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 498 247 pix_video; #X obj 498 59 gemhead; @@ -127,129 +120,55 @@ be analyzed..; #X floatatom 763 492 5 0 0 0 - - -; #X obj 616 534 pix_opencv_morphology; #X floatatom 764 533 5 0 0 0 - - -; -#X obj 620 513 pix_separator; -#X obj 616 881 square 4; -#X floatatom 579 958 5 0 0 0 - - -; -#X floatatom 613 958 5 0 0 0 - - -; -#X obj 443 975 gemhead; -#X obj 446 1026 translateXYZ; -#X obj 447 1066 square 0.2; -#X obj 582 1011 - 160; -#X obj 583 1042 / 40; -#X obj 629 1012 - 120; -#X obj 629 1043 / 30; -#X obj 442 999 colorRGB 0 1 0; #X obj 815 778 unpack 0 0; -#X obj 888 779 unpack 0 0; -#X obj 973 779 unpack 0 0; -#X obj 1064 780 unpack 0 0; -#X floatatom 1111 847 5 0 0 0 - - -; -#X floatatom 1310 1003 5 0 0 0 - - -; -#X floatatom 1213 846 5 0 0 0 - - -; -#X floatatom 1395 1007 5 0 0 0 - - -; -#X floatatom 1268 848 5 0 0 0 - - -; -#X floatatom 1455 1008 5 0 0 0 - - -; -#X floatatom 1359 849 5 0 0 0 - - -; -#X floatatom 1532 1009 5 0 0 0 - - -; -#X obj 1144 783 unpack 0 0; -#X obj 1217 784 unpack 0 0; -#X obj 1302 784 unpack 0 0; -#X obj 1393 785 unpack 0 0; #X obj 809 695 route 0 1 2 3 4 5 6 7; -#X obj 807 882 max; -#X obj 851 882 max; -#X obj 888 883 max; -#X obj 932 883 max; -#X obj 987 884 max; -#X obj 1031 884 max; -#X floatatom 753 989 5 0 0 0 - - -; -#X connect 1 0 20 0; -#X connect 1 1 14 0; -#X connect 1 2 85 0; -#X connect 2 0 86 0; -#X connect 3 0 60 0; -#X connect 4 0 86 1; -#X connect 6 0 87 1; -#X connect 8 0 88 1; -#X connect 19 0 32 0; -#X connect 20 0 58 0; -#X connect 22 0 23 0; -#X connect 23 0 22 0; +#X obj 616 881 square 2; +#X text 891 779 for each point; +#X text 808 823 X; +#X floatatom 868 809 5 0 0 0 - - -; +#X text 868 827 Y; +#X connect 1 0 13 0; +#X connect 1 1 7 0; +#X connect 1 2 51 0; +#X connect 12 0 25 0; +#X connect 13 0 52 0; +#X connect 15 0 16 0; +#X connect 16 0 15 0; +#X connect 17 0 18 0; +#X connect 19 0 46 0; +#X connect 20 0 23 0; +#X connect 21 0 22 0; +#X connect 22 0 25 1; +#X connect 23 0 24 0; #X connect 24 0 25 0; -#X connect 26 0 53 0; -#X connect 27 0 30 0; -#X connect 28 0 29 0; -#X connect 29 0 32 1; -#X connect 30 0 31 0; -#X connect 31 0 32 0; -#X connect 32 0 44 1; -#X connect 32 2 28 0; -#X connect 33 0 32 0; -#X connect 34 0 33 0; -#X connect 36 0 32 0; -#X connect 36 0 46 0; -#X connect 37 0 32 0; -#X connect 38 0 32 0; -#X connect 39 0 36 0; -#X connect 39 0 34 0; -#X connect 40 0 26 0; -#X connect 41 0 43 0; -#X connect 42 0 41 0; -#X connect 43 0 24 0; -#X connect 44 0 40 0; -#X connect 45 0 44 2; -#X connect 46 0 44 0; -#X connect 47 0 46 0; -#X connect 48 0 46 0; -#X connect 49 0 46 0; -#X connect 50 0 46 0; -#X connect 51 0 46 0; -#X connect 52 0 57 0; -#X connect 53 0 52 0; -#X connect 54 0 52 1; -#X connect 55 0 1 0; -#X connect 56 0 55 1; -#X connect 57 0 55 0; -#X connect 59 0 64 0; -#X connect 60 0 66 0; -#X connect 61 0 68 0; -#X connect 62 0 63 0; -#X connect 64 0 65 0; -#X connect 65 0 62 1; -#X connect 66 0 67 0; -#X connect 67 0 62 2; -#X connect 68 0 62 0; -#X connect 69 0 2 0; -#X connect 69 1 3 0; -#X connect 70 0 4 0; -#X connect 70 1 5 0; -#X connect 71 0 6 0; -#X connect 71 1 7 0; -#X connect 72 0 8 0; -#X connect 72 1 9 0; -#X connect 73 0 89 1; -#X connect 75 0 90 1; -#X connect 77 0 91 1; -#X connect 81 0 73 0; -#X connect 81 1 74 0; -#X connect 82 0 75 0; -#X connect 82 1 76 0; -#X connect 83 0 77 0; -#X connect 83 1 78 0; -#X connect 84 0 79 0; -#X connect 84 1 80 0; -#X connect 85 0 69 0; -#X connect 85 1 70 0; -#X connect 85 2 71 0; -#X connect 85 3 72 0; -#X connect 85 4 81 0; -#X connect 85 5 82 0; -#X connect 85 6 83 0; -#X connect 85 7 84 0; -#X connect 86 0 87 0; -#X connect 87 0 88 0; -#X connect 88 0 89 0; -#X connect 89 0 90 0; -#X connect 90 0 91 0; -#X connect 91 0 92 0; -#X connect 92 0 59 0; +#X connect 25 0 37 1; +#X connect 25 2 21 0; +#X connect 26 0 25 0; +#X connect 27 0 26 0; +#X connect 29 0 25 0; +#X connect 29 0 39 0; +#X connect 30 0 25 0; +#X connect 31 0 25 0; +#X connect 32 0 29 0; +#X connect 32 0 27 0; +#X connect 33 0 19 0; +#X connect 34 0 36 0; +#X connect 35 0 34 0; +#X connect 36 0 17 0; +#X connect 37 0 33 0; +#X connect 37 0 35 0; +#X connect 38 0 37 2; +#X connect 39 0 37 0; +#X connect 40 0 39 0; +#X connect 41 0 39 0; +#X connect 42 0 39 0; +#X connect 43 0 39 0; +#X connect 44 0 39 0; +#X connect 45 0 48 0; +#X connect 46 0 45 0; +#X connect 47 0 45 1; +#X connect 48 0 1 0; +#X connect 49 0 48 1; +#X connect 50 0 2 0; +#X connect 50 1 55 0; +#X connect 51 0 50 0; diff --git a/pix_opencv_distrans.cc b/pix_opencv_distrans.cc index 58e63fd..a87485d 100644 --- a/pix_opencv_distrans.cc +++ b/pix_opencv_distrans.cc @@ -43,7 +43,7 @@ pix_opencv_distrans :: pix_opencv_distrans() dist8u2 = NULL; dist8u = NULL; dist32s = NULL; - src = NULL; + rgb = NULL; gray = NULL; edge = NULL; labels = NULL; @@ -61,7 +61,7 @@ pix_opencv_distrans :: pix_opencv_distrans() pix_opencv_distrans :: ~pix_opencv_distrans() { //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &gray ); cvReleaseImage( &edge ); cvReleaseImage( &dist ); @@ -102,7 +102,7 @@ void pix_opencv_distrans :: processRGBAImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &gray ); cvReleaseImage( &edge ); cvReleaseImage( &dist ); @@ -115,8 +115,8 @@ void pix_opencv_distrans :: processRGBAImage(imageStruct &image) cvReleaseImage( &alpha ); //Create cv_images - src = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(src->width,src->height), IPL_DEPTH_8U, 1); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); dist8u1 = cvCloneImage( gray ); dist8u2 = cvCloneImage( gray ); @@ -127,16 +127,10 @@ void pix_opencv_distrans :: processRGBAImage(imageStruct &image) rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } - // 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( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - CvArr* in[] = { rgba }; - CvArr* out[] = { src, alpha }; - int from_to[] = { 0, 0, 1, 1, 2, 2, 3, 3 }; - //cvSet( rgba, cvScalar(1,2,3,4) ); - cvMixChannels( (const CvArr**)in, 1, out, 2, from_to, 4 ); - - cvCvtColor(src, gray, CV_BGR2GRAY); + cvCvtColor(rgba, rgb, CV_RGBA2RGB); + cvCvtColor(rgb, gray, CV_RGB2GRAY); cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); @@ -182,10 +176,7 @@ void pix_opencv_distrans :: processRGBAImage(imageStruct &image) } - CvArr* src[] = { dist8u, alpha }; - CvArr* dst[] = { rgba }; - cvMixChannels( (const CvArr**)src, 2, (CvArr**)dst, 1, from_to, 4 ); - //cvShowImage(wndname, cedge); + cvCvtColor(dist8u, rgba, CV_RGB2RGBA); memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); } @@ -213,7 +204,7 @@ void pix_opencv_distrans :: processRGBImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &gray ); cvReleaseImage( &edge ); cvReleaseImage( &dist ); @@ -226,8 +217,8 @@ void pix_opencv_distrans :: processRGBImage(imageStruct &image) cvReleaseImage( &alpha ); //Create cv_images - src = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(src->width,src->height), IPL_DEPTH_8U, 1); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); dist8u1 = cvCloneImage( gray ); dist8u2 = cvCloneImage( gray ); @@ -239,9 +230,9 @@ void pix_opencv_distrans :: processRGBImage(imageStruct &image) alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } // 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( src->imageData, image.data, image.xsize*image.ysize*3 ); + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); - cvCvtColor(src, gray, CV_BGR2GRAY); + cvCvtColor(rgb, gray, CV_BGR2GRAY); cvThreshold( gray, edge, (float)edge_thresh, (float)edge_thresh, CV_THRESH_BINARY ); @@ -319,7 +310,7 @@ void pix_opencv_distrans :: processGrayImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &gray ); cvReleaseImage( &edge ); cvReleaseImage( &dist ); @@ -332,8 +323,8 @@ void pix_opencv_distrans :: processGrayImage(imageStruct &image) cvReleaseImage( &alpha ); //Create cv_images - src = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); - gray = cvCreateImage(cvSize(src->width,src->height), IPL_DEPTH_8U, 1); + rgb = cvCreateImage(cvSize(image.xsize,image.ysize), IPL_DEPTH_8U, 3); + gray = cvCreateImage(cvSize(rgb->width,rgb->height), IPL_DEPTH_8U, 1); dist = cvCreateImage( cvGetSize(gray), IPL_DEPTH_32F, 1 ); dist8u1 = cvCloneImage( gray ); dist8u2 = cvCloneImage( gray ); diff --git a/pix_opencv_distrans.h b/pix_opencv_distrans.h index bfa1506..9e16c86 100644 --- a/pix_opencv_distrans.h +++ b/pix_opencv_distrans.h @@ -78,7 +78,7 @@ class GEM_EXTERN pix_opencv_distrans : public GemPixObj // The output and temporary images IplImage *dist, *dist8u1, *dist8u2, *dist8u, *dist32s; - IplImage *src, *gray, *edge, *labels; + IplImage *rgb, *gray, *edge, *labels; IplImage *rgba, *alpha; }; diff --git a/pix_opencv_floodfill-help.pd b/pix_opencv_floodfill-help.pd index 7da304f..5adaa14 100644 --- a/pix_opencv_floodfill-help.pd +++ b/pix_opencv_floodfill-help.pd @@ -1,4 +1,4 @@ -#N canvas 409 124 1171 685 10; +#N canvas 265 148 1171 685 10; #X obj -96 -15 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 0 22 454 304 gemwin 0; @@ -40,7 +40,7 @@ #X connect 10 2 11 0; #X connect 11 0 6 0; #X restore -89 31 pd gemwin; -#X msg -88 9 create; +#X msg -88 9 destroy; #X text -88 -12 Create window and render; #X obj 288 360 cnv 15 600 350 empty empty empty 20 12 0 14 -24198 -66577 0; @@ -67,9 +67,6 @@ specific color; #X text 485 534 activate color mode ( default : on ); #X msg 381 461 fillcolor 1 255 0 123; #X text 519 462 fillcolor of nth component ( 1 < n < 10 ); -#X text 425 372 mark %x %y : mark a component; -#X text 425 384 ( 0 <= %x <= 1 ); -#X text 426 395 ( 0 <= %y <= 1 ); #X msg 365 414 delete 1; #X msg 379 436 clear; #X text 425 414 delete a component ( 1 <= index <= 10 ); @@ -101,13 +98,13 @@ specific color; #X msg 505 65 open \$1; #X obj 493 174 pix_film; #X msg 511 108 auto \$1; -#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +#X obj 511 90 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X msg 606 91 colorspace RGBA; #X msg 711 91 colorspace RGB; #X msg 815 91 colorspace Grey; #X obj 606 63 loadbang; -#N canvas 0 0 450 300 vswitch 0; +#N canvas 4 49 450 300 vswitch 0; #X obj 144 263 outlet; #X obj 36 26 inlet; #X obj 260 29 inlet; @@ -145,9 +142,15 @@ specific color; #X msg 281 43 dialog; #X msg 286 73 device /dev/dv1394-0; #X obj 315 764 rectangle 5.3 4; +#X floatatom 743 233 5 0 0 0 - - -; +#X floatatom 791 232 5 0 0 0 - - -; +#X text 424 386 mark x y : mark a component; +#X obj 315 318 pix_resize 320 240; #X connect 1 0 2 0; #X connect 2 0 1 0; +#X connect 5 0 68 0; #X connect 5 0 7 1; +#X connect 5 1 69 0; #X connect 5 1 6 1; #X connect 5 2 10 0; #X connect 6 0 9 1; @@ -157,45 +160,46 @@ specific color; #X connect 9 0 19 0; #X connect 10 0 11 0; #X connect 11 0 8 0; -#X connect 12 0 49 0; -#X connect 12 1 35 0; +#X connect 12 0 46 0; +#X connect 12 1 32 0; #X connect 17 0 12 1; #X connect 18 0 12 2; #X connect 19 0 12 0; #X connect 20 0 12 0; #X connect 21 0 20 0; #X connect 23 0 12 0; -#X connect 28 0 12 0; -#X connect 29 0 12 0; -#X connect 35 0 40 0; -#X connect 40 0 36 0; -#X connect 40 1 37 0; -#X connect 40 2 38 0; -#X connect 40 3 39 0; -#X connect 46 0 12 0; -#X connect 47 0 12 0; -#X connect 48 0 55 0; -#X connect 49 0 70 0; -#X connect 50 0 53 0; +#X connect 25 0 12 0; +#X connect 26 0 12 0; +#X connect 32 0 37 0; +#X connect 37 0 33 0; +#X connect 37 1 34 0; +#X connect 37 2 35 0; +#X connect 37 3 36 0; +#X connect 43 0 12 0; +#X connect 44 0 12 0; +#X connect 45 0 52 0; +#X connect 46 0 67 0; +#X connect 47 0 50 0; +#X connect 48 0 49 0; +#X connect 49 0 52 1; +#X connect 50 0 51 0; #X connect 51 0 52 0; -#X connect 52 0 55 1; -#X connect 53 0 54 0; -#X connect 54 0 55 0; -#X connect 55 0 62 1; -#X connect 55 2 51 0; -#X connect 56 0 55 0; -#X connect 57 0 56 0; +#X connect 52 0 59 1; +#X connect 52 2 48 0; +#X connect 53 0 52 0; +#X connect 54 0 53 0; +#X connect 55 0 52 0; +#X connect 55 0 61 0; +#X connect 56 0 52 0; +#X connect 57 0 52 0; #X connect 58 0 55 0; -#X connect 58 0 64 0; -#X connect 59 0 55 0; -#X connect 60 0 55 0; -#X connect 61 0 58 0; -#X connect 61 0 57 0; -#X connect 62 0 12 0; -#X connect 63 0 62 2; -#X connect 64 0 62 0; -#X connect 65 0 64 0; -#X connect 66 0 64 0; -#X connect 67 0 64 0; -#X connect 68 0 64 0; -#X connect 69 0 64 0; +#X connect 58 0 54 0; +#X connect 59 0 71 0; +#X connect 60 0 59 2; +#X connect 61 0 59 0; +#X connect 62 0 61 0; +#X connect 63 0 61 0; +#X connect 64 0 61 0; +#X connect 65 0 61 0; +#X connect 66 0 61 0; +#X connect 71 0 12 0; diff --git a/pix_opencv_laplace.cc b/pix_opencv_laplace.cc index 8c8f3d3..163cd63 100644 --- a/pix_opencv_laplace.cc +++ b/pix_opencv_laplace.cc @@ -37,9 +37,9 @@ pix_opencv_laplace :: pix_opencv_laplace() comp_xsize = 0; comp_ysize = 0; - frame = NULL; + rgb = NULL; rgba = NULL; - alpha = NULL; + grey = NULL; laplace = NULL; colorlaplace = NULL; for (i=0; i<3; i++) planes[i] = NULL; @@ -56,9 +56,9 @@ pix_opencv_laplace :: ~pix_opencv_laplace() //Destroy cv_images to clean memory for( i = 0; i < 3; i++ ) cvReleaseImage( &planes[i] ); - cvReleaseImage( &frame ); + cvReleaseImage( &rgb ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); cvReleaseImage( &laplace ); cvReleaseImage( &colorlaplace ); } @@ -80,9 +80,9 @@ void pix_opencv_laplace :: processRGBAImage(imageStruct &image) //Destroy cv_images to clean memory for( i = 0; i < 3; i++ ) cvReleaseImage( &planes[i] ); - cvReleaseImage( &frame ); + cvReleaseImage( &rgb ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); cvReleaseImage( &laplace ); cvReleaseImage( &colorlaplace ); @@ -91,33 +91,25 @@ void pix_opencv_laplace :: processRGBAImage(imageStruct &image) planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - frame = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); rgba = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); + grey = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); } // 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( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - CvArr* in[] = { rgba }; - CvArr* out[] = { frame, alpha }; - int from_to[] = { 0, 0, 1, 1, 2, 2, 3, 3 }; - //cvSet( rgba, cvScalar(1,2,3,4) ); - cvMixChannels( (const CvArr**)in, 1, out, 2, from_to, 4 ); - - cvCvtPixToPlane( frame, planes[0], planes[1], planes[2], 0 ); - for( i = 0; i < 3; i++ ) - { - cvLaplace( planes[i], laplace, aperture_size ); - cvConvertScaleAbs( laplace, planes[i], 1, 0 ); - } - cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); - colorlaplace->origin = frame->origin; - - - CvArr* src[] = { colorlaplace, alpha }; - CvArr* dst[] = { rgba }; - cvMixChannels( (const CvArr**)src, 2, (CvArr**)dst, 1, from_to, 4 ); - //cvShowImage(wndname, cedge); + cvCvtColor( rgba, rgb, CV_RGBA2RGB); + + cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); + for( i = 0; i < 3; i++ ) + { + cvLaplace( planes[i], laplace, aperture_size ); + cvConvertScaleAbs( laplace, planes[i], 1, 0 ); + } + cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); + colorlaplace->origin = rgb->origin; + + cvCvtColor( colorlaplace, rgba, CV_RGB2RGBA); memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); } @@ -126,7 +118,7 @@ void pix_opencv_laplace :: processRGBImage(imageStruct &image) unsigned char *pixels = image.data; int i; - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!frame)) { + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { this->comp_xsize = image.xsize; this->comp_ysize = image.ysize; @@ -134,7 +126,7 @@ void pix_opencv_laplace :: processRGBImage(imageStruct &image) //Destroy cv_images to clean memory for( i = 0; i < 3; i++ ) cvReleaseImage( &planes[i] ); - cvReleaseImage( &frame ); + cvReleaseImage( &rgb ); cvReleaseImage( &laplace ); cvReleaseImage( &colorlaplace ); @@ -143,20 +135,19 @@ void pix_opencv_laplace :: processRGBImage(imageStruct &image) planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - frame = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); } // 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( frame->imageData, image.data, image.xsize*image.ysize*3 ); - - cvCvtPixToPlane( frame, planes[0], planes[1], planes[2], 0 ); - for( i = 0; i < 3; i++ ) - { - cvLaplace( planes[i], laplace, 3 ); - cvConvertScaleAbs( laplace, planes[i], 1, 0 ); - } - cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); - colorlaplace->origin = frame->origin; + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); + cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); + for( i = 0; i < 3; i++ ) + { + cvLaplace( planes[i], laplace, 3 ); + cvConvertScaleAbs( laplace, planes[i], 1, 0 ); + } + cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); + colorlaplace->origin = rgb->origin; //cvShowImage(wndname, cedge); memcpy( image.data, colorlaplace->imageData, image.xsize*image.ysize*3 ); @@ -172,7 +163,7 @@ void pix_opencv_laplace :: processGrayImage(imageStruct &image) unsigned char *pixels = image.data; int i; - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!alpha)) { + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { this->comp_xsize = image.xsize; this->comp_ysize = image.ysize; @@ -180,37 +171,36 @@ void pix_opencv_laplace :: processGrayImage(imageStruct &image) //Destroy cv_images to clean memory for( i = 0; i < 3; i++ ) cvReleaseImage( &planes[i] ); - cvReleaseImage( &frame ); + cvReleaseImage( &rgb ); cvReleaseImage( &laplace ); cvReleaseImage( &colorlaplace ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); //Create cv_images for( i = 0; i < 3; i++ ) planes[i] = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); laplace = cvCreateImage( cvSize(image.xsize, image.ysize), IPL_DEPTH_16S, 1 ); colorlaplace = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - frame = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); - alpha = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); + rgb = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 3 ); + grey = cvCreateImage( cvSize(image.xsize,image.ysize), 8, 1 ); } - // 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( alpha->imageData, image.data, image.xsize*image.ysize ); + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - cvCvtColor( alpha, frame, CV_GRAY2RGB); + cvCvtColor( grey, rgb, CV_GRAY2RGB); - cvCvtPixToPlane( frame, planes[0], planes[1], planes[2], 0 ); - for( i = 0; i < 3; i++ ) - { - cvLaplace( planes[i], laplace, 3 ); - cvConvertScaleAbs( laplace, planes[i], 1, 0 ); - } - cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); - colorlaplace->origin = frame->origin; + cvCvtPixToPlane( rgb, planes[0], planes[1], planes[2], 0 ); + for( i = 0; i < 3; i++ ) + { + cvLaplace( planes[i], laplace, 3 ); + cvConvertScaleAbs( laplace, planes[i], 1, 0 ); + } + cvCvtPlaneToPix( planes[0], planes[1], planes[2], 0, colorlaplace ); + colorlaplace->origin = rgb->origin; - cvCvtColor( colorlaplace, alpha, CV_RGB2GRAY); + cvCvtColor( colorlaplace, grey, CV_RGB2GRAY); //cvShowImage(wndname, cedge); - memcpy( image.data, alpha->imageData, image.xsize*image.ysize ); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); } ///////////////////////////////////////////////////////// diff --git a/pix_opencv_laplace.h b/pix_opencv_laplace.h index 8eeb25d..c1aff98 100644 --- a/pix_opencv_laplace.h +++ b/pix_opencv_laplace.h @@ -75,7 +75,7 @@ class GEM_EXTERN pix_opencv_laplace : public GemPixObj ///////// // IplImage needed - IplImage *frame, *rgba, *alpha, *laplace, *colorlaplace, *planes[3]; + IplImage *rgb, *rgba, *grey, *laplace, *colorlaplace, *planes[3]; }; diff --git a/pix_opencv_morphology.cc b/pix_opencv_morphology.cc index 27c4a26..a241ac5 100644 --- a/pix_opencv_morphology.cc +++ b/pix_opencv_morphology.cc @@ -38,8 +38,8 @@ pix_opencv_morphology :: pix_opencv_morphology() comp_ysize = 0; rgba = NULL; - alpha = NULL; - src = NULL; + grey = NULL; + rgb = NULL; dst = NULL; element_shape = CV_SHAPE_RECT; @@ -53,10 +53,10 @@ pix_opencv_morphology :: pix_opencv_morphology() pix_opencv_morphology :: ~pix_opencv_morphology() { //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &dst ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); } ///////////////////////////////////////////////////////// @@ -74,25 +74,21 @@ void pix_opencv_morphology :: processRGBAImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &dst ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); //Create cv_images - src = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); - dst = cvCloneImage(src); + rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); + dst = cvCloneImage(rgb); rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } // 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( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - CvArr* in[] = { rgba }; - CvArr* out[] = { src, alpha }; - int from_to[] = { 0, 0, 1, 1, 2, 2, 3, 3 }; - //cvSet( rgba, cvScalar(1,2,3,4) ); - cvMixChannels( (const CvArr**)in, 1, out, 2, from_to, 4 ); + cvCvtColor(rgba, rgb, CV_RGBA2RGB); if (this->mode == 1) { //open/close int n = pos; @@ -100,12 +96,12 @@ void pix_opencv_morphology :: processRGBAImage(imageStruct &image) element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); if( n < 0 ) { - cvErode(src,dst,element,1); + cvErode(rgb,dst,element,1); cvDilate(dst,dst,element,1); } else { - cvDilate(src,dst,element,1); + cvDilate(rgb,dst,element,1); cvErode(dst,dst,element,1); } cvReleaseStructuringElement(&element); @@ -116,20 +112,17 @@ void pix_opencv_morphology :: processRGBAImage(imageStruct &image) element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); if( n < 0 ) { - cvErode(src,dst,element,1); + cvErode(rgb,dst,element,1); } else { - cvDilate(src,dst,element,1); + cvDilate(rgb,dst,element,1); } cvReleaseStructuringElement(&element); } - CvArr* src[] = { dst, alpha }; - CvArr* dst[] = { rgba }; - cvMixChannels( (const CvArr**)src, 2, (CvArr**)dst, 1, from_to, 4 ); - //cvShowImage(wndname, cedge); + cvCvtColor(dst, rgba, CV_RGB2RGBA); memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); } @@ -138,21 +131,21 @@ void pix_opencv_morphology :: processRGBImage(imageStruct &image) unsigned char *pixels = image.data; int i; - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!src)) { + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!rgb)) { this->comp_xsize = image.xsize; this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &dst ); //Create cv_images - src = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - dst = cvCloneImage(src); + rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); + dst = cvCloneImage(rgb); } // 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( src->imageData, image.data, image.xsize*image.ysize*3 ); + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); if (this->mode == 1) { //open/close int n = pos; @@ -160,12 +153,12 @@ void pix_opencv_morphology :: processRGBImage(imageStruct &image) element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); if( n < 0 ) { - cvErode(src,dst,element,1); + cvErode(rgb,dst,element,1); cvDilate(dst,dst,element,1); } else { - cvDilate(src,dst,element,1); + cvDilate(rgb,dst,element,1); cvErode(dst,dst,element,1); } cvReleaseStructuringElement(&element); @@ -176,11 +169,11 @@ void pix_opencv_morphology :: processRGBImage(imageStruct &image) element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); if( n < 0 ) { - cvErode(src,dst,element,1); + cvErode(rgb,dst,element,1); } else { - cvDilate(src,dst,element,1); + cvDilate(rgb,dst,element,1); } cvReleaseStructuringElement(&element); @@ -200,25 +193,25 @@ void pix_opencv_morphology :: processGrayImage(imageStruct &image) unsigned char *pixels = image.data; int i; - if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!alpha)) { + if ((this->comp_xsize!=image.xsize)||(this->comp_ysize!=image.ysize)||(!grey)) { this->comp_xsize = image.xsize; this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &src ); + cvReleaseImage( &rgb ); cvReleaseImage( &dst ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); //Create cv_images - src = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); - dst = cvCloneImage(src); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + rgb = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 3 ); + dst = cvCloneImage(rgb); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } // 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( alpha->imageData, image.data, image.xsize*image.ysize ); + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); - cvCvtColor(alpha, src, CV_GRAY2RGB); + cvCvtColor(grey, rgb, CV_GRAY2RGB); if (this->mode == 1) { //open/close int n = pos; @@ -226,12 +219,12 @@ void pix_opencv_morphology :: processGrayImage(imageStruct &image) element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); if( n < 0 ) { - cvErode(src,dst,element,1); + cvErode(rgb,dst,element,1); cvDilate(dst,dst,element,1); } else { - cvDilate(src,dst,element,1); + cvDilate(rgb,dst,element,1); cvErode(dst,dst,element,1); } cvReleaseStructuringElement(&element); @@ -242,19 +235,19 @@ void pix_opencv_morphology :: processGrayImage(imageStruct &image) element = cvCreateStructuringElementEx( an*2+1, an*2+1, an, an, element_shape, 0 ); if( n < 0 ) { - cvErode(src,dst,element,1); + cvErode(rgb,dst,element,1); } else { - cvDilate(src,dst,element,1); + cvDilate(rgb,dst,element,1); } cvReleaseStructuringElement(&element); } - cvCvtColor(dst, alpha, CV_RGB2GRAY); + cvCvtColor(dst, grey, CV_RGB2GRAY); //cvShowImage(wndname, cedge); - memcpy( image.data, alpha->imageData, image.xsize*image.ysize ); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); } ///////////////////////////////////////////////////////// diff --git a/pix_opencv_morphology.h b/pix_opencv_morphology.h index 238549e..90c0780 100644 --- a/pix_opencv_morphology.h +++ b/pix_opencv_morphology.h @@ -78,7 +78,7 @@ class GEM_EXTERN pix_opencv_morphology : public GemPixObj static void shapeMessCallback(void *data, t_floatarg f); // The output and temporary images - IplImage *rgba, *alpha, *src, *dst; + IplImage *rgba, *grey, *rgb, *dst; IplConvKernel *element; diff --git a/pix_opencv_motempl.cc b/pix_opencv_motempl.cc index 208702a..8cd823c 100644 --- a/pix_opencv_motempl.cc +++ b/pix_opencv_motempl.cc @@ -53,10 +53,10 @@ pix_opencv_motempl :: pix_opencv_motempl() min_size=50; max_size=500; - img = NULL; + rgb = NULL; motion = NULL; rgba = NULL; - alpha = NULL; + grey = NULL; mhi = NULL; orient = NULL; mask = NULL; @@ -67,12 +67,12 @@ pix_opencv_motempl :: pix_opencv_motempl() cvInitFont( &font, CV_FONT_HERSHEY_PLAIN, 1.0, 1.0, 0, 1, 8 ); - img = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); + rgb = cvCreateImage(cvSize(comp_xsize,comp_ysize), IPL_DEPTH_8U, 3); motion = cvCreateImage( cvSize(comp_xsize,comp_ysize), 8, 3 ); cvZero( motion ); - motion->origin = img->origin; + motion->origin = rgb->origin; rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); + grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); } @@ -83,10 +83,10 @@ pix_opencv_motempl :: pix_opencv_motempl() pix_opencv_motempl :: ~pix_opencv_motempl() { //Destroy cv_images to clean memory - cvReleaseImage( &img ); + cvReleaseImage( &rgb ); cvReleaseImage( &motion ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); } ///////////////////////////////////////////////////////// @@ -114,27 +114,22 @@ void pix_opencv_motempl :: processRGBAImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &img ); + cvReleaseImage( &rgb ); cvReleaseImage( &motion ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); //Create cv_images - img = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(img->width,img->height), 8, 3 ); + rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); cvZero( motion ); - motion->origin = img->origin; + motion->origin = rgb->origin; rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } - // 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( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - CvArr* in[] = { rgba }; - CvArr* out[] = { img, alpha }; - int from_to[] = { 0, 0, 1, 1, 2, 2, 3, 3 }; - //cvSet( rgba, cvScalar(1,2,3,4) ); - cvMixChannels( (const CvArr**)in, 1, out, 2, from_to, 4 ); + cvCvtColor( rgba, rgb, CV_RGBA2RGB); // allocate images at the beginning or // reallocate them if the frame size is changed @@ -161,7 +156,7 @@ void pix_opencv_motempl :: processRGBAImage(imageStruct &image) mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); } - cvCvtColor( img, buf[last], CV_BGR2GRAY ); // convert frame to grayscale + cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame last = idx2; @@ -263,11 +258,8 @@ void pix_opencv_motempl :: processRGBAImage(imageStruct &image) } } - - CvArr* src[] = { motion, alpha }; - CvArr* dst[] = { rgba }; - cvMixChannels( (const CvArr**)src, 2, (CvArr**)dst, 1, from_to, 4 ); - //cvShowImage(wndname, cedge); + + cvCvtColor( motion, rgba, CV_RGB2RGBA); memcpy( image.data, rgba->imageData, image.xsize*image.ysize*4 ); } @@ -292,21 +284,21 @@ void pix_opencv_motempl :: processRGBImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &img ); + cvReleaseImage( &rgb ); cvReleaseImage( &motion ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); //Create cv_images - img = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(img->width,img->height), 8, 3 ); + rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); cvZero( motion ); - motion->origin = img->origin; + motion->origin = rgb->origin; rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } // 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( img->imageData, image.data, image.xsize*image.ysize*3 ); + memcpy( rgb->imageData, image.data, image.xsize*image.ysize*3 ); // allocate images at the beginning or // reallocate them if the frame size is changed @@ -333,7 +325,7 @@ void pix_opencv_motempl :: processRGBImage(imageStruct &image) mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); } - cvCvtColor( img, buf[last], CV_BGR2GRAY ); // convert frame to grayscale + cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame last = idx2; @@ -466,24 +458,24 @@ void pix_opencv_motempl :: processGrayImage(imageStruct &image) this->comp_ysize = image.ysize; //Destroy cv_images to clean memory - cvReleaseImage( &img ); + cvReleaseImage( &rgb ); cvReleaseImage( &motion ); cvReleaseImage( &rgba ); - cvReleaseImage( &alpha ); + cvReleaseImage( &grey ); //Create cv_images - img = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); - motion = cvCreateImage( cvSize(img->width,img->height), 8, 3 ); + rgb = cvCreateImage(cvSize(image.xsize, image.ysize), IPL_DEPTH_8U, 3); + motion = cvCreateImage( cvSize(rgb->width,rgb->height), 8, 3 ); cvZero( motion ); - motion->origin = img->origin; + motion->origin = rgb->origin; rgba = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 4 ); - alpha = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); + grey = cvCreateImage( cvSize(image.xsize, image.ysize), 8, 1 ); } // 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( alpha->imageData, image.data, image.xsize*image.ysize ); + memcpy( grey->imageData, image.data, image.xsize*image.ysize ); // Convert to RGB - cvCvtColor( alpha, img, CV_GRAY2RGB); + cvCvtColor( grey, rgb, CV_GRAY2RGB); // allocate images at the beginning or // reallocate them if the frame size is changed @@ -510,7 +502,7 @@ void pix_opencv_motempl :: processGrayImage(imageStruct &image) mask = cvCreateImage( size, IPL_DEPTH_8U, 1 ); } - cvCvtColor( img, buf[last], CV_BGR2GRAY ); // convert frame to grayscale + cvCvtColor( rgb, buf[last], CV_BGR2GRAY ); // convert frame to grayscale idx2 = (last + 1) % frame_buffer_num; // index of (last - (N-1))th frame last = idx2; @@ -614,9 +606,9 @@ void pix_opencv_motempl :: processGrayImage(imageStruct &image) // Convert to grayscale - cvCvtColor( motion, alpha, CV_RGB2GRAY); + cvCvtColor( motion, grey, CV_RGB2GRAY); //cvShowImage(wndname, cedge); - memcpy( image.data, alpha->imageData, image.xsize*image.ysize ); + memcpy( image.data, grey->imageData, image.xsize*image.ysize ); } ///////////////////////////////////////////////////////// diff --git a/pix_opencv_motempl.h b/pix_opencv_motempl.h index e83a3bf..7fc6aa7 100644 --- a/pix_opencv_motempl.h +++ b/pix_opencv_motempl.h @@ -109,7 +109,7 @@ class GEM_EXTERN pix_opencv_motempl : public GemPixObj static void apertureMessCallback(void *data, t_floatarg aperture); // The output and temporary images - IplImage *img, *motion, *rgba, *alpha; + IplImage *rgb, *motion, *rgba, *grey; // ring image buffer IplImage **buf; diff --git a/pix_opencv_of_bm-help.pd b/pix_opencv_of_bm-help.pd index 20a368c..fd7a06c 100755 --- a/pix_opencv_of_bm-help.pd +++ b/pix_opencv_of_bm-help.pd @@ -1,4 +1,4 @@ -#N canvas 1 49 1424 780 10; +#N canvas 4 61 1419 780 10; #X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 189 149 454 304 gemwin 0; @@ -40,7 +40,7 @@ #X connect 10 0 0 0; #X connect 11 0 0 0; #X restore 984 101 pd gemwin; -#X msg 984 80 create; +#X msg 984 80 destroy; #X text 987 62 Create window and render; #X text 979 189 with a great help from Mateu Batle & Alberto de Rodrigo from the iBit foundation.; @@ -63,7 +63,7 @@ average direction and the intensity of the movement in a video stream. #X text 549 642 marked with a white arrow on the stream; #X text 549 618 average angle of the blocks movement; #X text 548 630 ( in degrees [-180 \, 180]); -#X obj 600 463 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +#X obj 600 463 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1; #X msg 515 461 nightmode \$1; #X floatatom 573 332 5 0 0 0 - - -; @@ -138,7 +138,7 @@ when on ); #X connect 11 1 9 0; #X connect 11 1 6 0; #X restore 385 125 pd vswitch; -#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 1 +#X obj 453 125 tgl 15 0 empty load empty 17 7 0 10 -262144 -1 -1 0 1; #X obj 312 94 pix_video; #X obj 315 -64 gemhead; @@ -149,12 +149,12 @@ when on ); #X obj 294 659 pix_texture; #X obj 294 687 square 2; #X obj 455 664 pix_texture; -#X obj 454 282 pix_resize 320 240; #X text 504 146 this object can work on small frames unless you have a very powerful machine; #X obj 456 688 square 2; #X obj 295 201 pix_separator; #X obj 454 205 pix_separator; +#X obj 384 154 pix_resize 320 240; #X connect 1 0 2 0; #X connect 2 0 1 0; #X connect 9 0 69 0; @@ -195,8 +195,7 @@ a very powerful machine; #X connect 55 0 51 0; #X connect 56 0 57 0; #X connect 57 0 67 0; -#X connect 58 0 70 0; -#X connect 59 0 73 0; +#X connect 58 0 9 0; #X connect 59 0 74 0; #X connect 60 0 59 2; #X connect 61 0 59 0; @@ -206,7 +205,8 @@ a very powerful machine; #X connect 65 0 61 0; #X connect 66 0 61 0; #X connect 67 0 68 0; -#X connect 69 0 72 0; -#X connect 70 0 9 0; -#X connect 73 0 56 0; -#X connect 74 0 43 0; +#X connect 69 0 71 0; +#X connect 72 0 56 0; +#X connect 73 0 43 0; +#X connect 74 0 72 0; +#X connect 74 0 73 0; diff --git a/pix_opencv_of_hs-help.pd b/pix_opencv_of_hs-help.pd index 6cb54e0..bd7255f 100755 --- a/pix_opencv_of_hs-help.pd +++ b/pix_opencv_of_hs-help.pd @@ -1,4 +1,4 @@ -#N canvas 1 49 1424 780 10; +#N canvas 5 61 1424 780 10; #X obj 977 55 cnv 15 220 70 empty empty empty 20 12 0 14 -195568 -66577 0; #N canvas 189 149 454 304 gemwin 0; @@ -114,7 +114,6 @@ #X obj 293 613 pix_texture; #X obj 293 641 square 2; #X obj 454 618 pix_texture; -#X obj 454 278 pix_resize 320 240; #X text 504 146 this object can work on small frames unless you have a very powerful machine; #X obj 455 642 square 2; @@ -149,6 +148,7 @@ average direction and the intensity of the movement in a video stream. #X text 981 202 comments to ydegoyon@gmail.com; #X text 980 126 pix_opencv_of_hs : Haron and Schunck optical flow algorithm. ; +#X obj 385 160 pix_resize 320 240; #X connect 1 0 2 0; #X connect 2 0 1 0; #X connect 5 0 6 0; @@ -172,9 +172,8 @@ average direction and the intensity of the movement in a video stream. #X connect 28 0 24 0; #X connect 29 0 30 0; #X connect 30 0 40 0; -#X connect 31 0 43 0; -#X connect 32 0 46 0; -#X connect 32 0 47 0; +#X connect 31 0 47 0; +#X connect 32 0 68 0; #X connect 33 0 32 2; #X connect 34 0 32 0; #X connect 35 0 34 0; @@ -183,20 +182,21 @@ average direction and the intensity of the movement in a video stream. #X connect 38 0 34 0; #X connect 39 0 34 0; #X connect 40 0 41 0; -#X connect 42 0 45 0; -#X connect 43 0 48 0; -#X connect 46 0 29 0; -#X connect 47 0 16 0; -#X connect 48 0 42 0; -#X connect 48 1 11 0; -#X connect 48 2 5 0; -#X connect 49 0 50 0; -#X connect 50 0 48 0; -#X connect 51 0 61 0; -#X connect 52 0 53 0; -#X connect 53 0 48 0; -#X connect 54 0 55 0; -#X connect 55 0 48 0; -#X connect 57 0 48 0; -#X connect 58 0 57 0; -#X connect 61 0 48 0; +#X connect 42 0 44 0; +#X connect 45 0 29 0; +#X connect 46 0 16 0; +#X connect 47 0 42 0; +#X connect 47 1 11 0; +#X connect 47 2 5 0; +#X connect 48 0 49 0; +#X connect 49 0 47 0; +#X connect 50 0 60 0; +#X connect 51 0 52 0; +#X connect 52 0 47 0; +#X connect 53 0 54 0; +#X connect 54 0 47 0; +#X connect 56 0 47 0; +#X connect 57 0 56 0; +#X connect 60 0 47 0; +#X connect 68 0 46 0; +#X connect 68 0 45 0; diff --git a/pix_opencv_of_lk-help.pd b/pix_opencv_of_lk-help.pd index 8d501d4..2a90e3c 100755 --- a/pix_opencv_of_lk-help.pd +++ b/pix_opencv_of_lk-help.pd @@ -114,7 +114,6 @@ #X obj 293 612 pix_texture; #X obj 293 640 square 2; #X obj 454 617 pix_texture; -#X obj 454 282 pix_resize 320 240; #X text 504 146 this object can work on small frames unless you have a very powerful machine; #X obj 455 641 square 2; @@ -147,6 +146,7 @@ average direction and the intensity of the movement in a video stream. \, 7 \, 9 \, 11 \, 13 \, 15); #X text 627 363 threshold value for the detection of movement (default 100); +#X obj 383 164 pix_resize 320 240; #X connect 1 0 2 0; #X connect 2 0 1 0; #X connect 5 0 6 0; @@ -172,9 +172,8 @@ average direction and the intensity of the movement in a video stream. #X connect 28 0 24 0; #X connect 29 0 30 0; #X connect 30 0 40 0; -#X connect 31 0 43 0; -#X connect 32 0 46 0; -#X connect 32 0 47 0; +#X connect 31 0 62 0; +#X connect 32 0 66 0; #X connect 33 0 32 2; #X connect 34 0 32 0; #X connect 35 0 34 0; @@ -183,18 +182,19 @@ average direction and the intensity of the movement in a video stream. #X connect 38 0 34 0; #X connect 39 0 34 0; #X connect 40 0 41 0; -#X connect 42 0 45 0; -#X connect 43 0 63 0; -#X connect 46 0 29 0; -#X connect 47 0 16 0; -#X connect 52 0 53 0; -#X connect 53 0 63 0; -#X connect 54 0 62 0; -#X connect 55 0 56 0; -#X connect 56 0 63 0; -#X connect 57 0 63 0; -#X connect 58 0 57 0; -#X connect 62 0 63 0; -#X connect 63 0 42 0; -#X connect 63 1 11 0; -#X connect 63 2 5 0; +#X connect 42 0 44 0; +#X connect 45 0 29 0; +#X connect 46 0 16 0; +#X connect 51 0 52 0; +#X connect 52 0 62 0; +#X connect 53 0 61 0; +#X connect 54 0 55 0; +#X connect 55 0 62 0; +#X connect 56 0 62 0; +#X connect 57 0 56 0; +#X connect 61 0 62 0; +#X connect 62 0 42 0; +#X connect 62 1 11 0; +#X connect 62 2 5 0; +#X connect 66 0 45 0; +#X connect 66 0 46 0; -- cgit v1.2.1