From f29ff03b88ab33d418c575a28447d65167d054bb Mon Sep 17 00:00:00 2001 From: "N.N." Date: Sun, 30 Aug 2009 19:07:04 +0000 Subject: fixed mouse pointing ( almost ) svn path=/trunk/externals/pix_opencv/; revision=12146 --- pix_opencv_floodfill.cc | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) (limited to 'pix_opencv_floodfill.cc') diff --git a/pix_opencv_floodfill.cc b/pix_opencv_floodfill.cc index 3b492c2..1c8cdd3 100755 --- a/pix_opencv_floodfill.cc +++ b/pix_opencv_floodfill.cc @@ -90,17 +90,18 @@ void pix_opencv_floodfill :: processRGBAImage(imageStruct &image) this->comp_xsize=image.xsize; this->comp_ysize=image.ysize; + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); } memcpy( rgba->imageData, image.data, image.xsize*image.ysize*4 ); - - if ( !x_color ) - { - cvCvtColor(rgba, grey, CV_BGRA2GRAY); - } + cvCvtColor(rgba, grey, CV_BGRA2GRAY); + cvCvtColor(rgba, rgb, CV_BGRA2BGR); // mark recognized components for ( i=0; iimageData, image.xsize*image.ysize*4 ); } @@ -152,6 +157,10 @@ void pix_opencv_floodfill :: processRGBImage(imageStruct &image) this->comp_xsize=image.xsize; this->comp_ysize=image.ysize; + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); @@ -219,6 +228,10 @@ void pix_opencv_floodfill :: processGrayImage(imageStruct &image) this->comp_xsize=image.xsize; this->comp_ysize=image.ysize; + cvReleaseImage( &rgba ); + cvReleaseImage( &rgb ); + cvReleaseImage( &grey ); + rgba = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 4 ); rgb = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 3 ); grey = cvCreateImage( cvSize(comp_xsize, comp_ysize), 8, 1 ); @@ -287,9 +300,9 @@ void pix_opencv_floodfill :: connectivityMessCallback(void *data, t_floatarg co GetMyClass(data)->connectivityMess(connectivity); } -void pix_opencv_floodfill :: markMessCallback(void *data, t_floatarg perx, t_floatarg pery) +void pix_opencv_floodfill :: markMessCallback(void *data, t_floatarg px, t_floatarg py) { - GetMyClass(data)->markMess(perx, pery); + GetMyClass(data)->markMess(px, py); } void pix_opencv_floodfill :: deleteMessCallback(void *data, t_floatarg index) @@ -354,19 +367,19 @@ void pix_opencv_floodfill :: connectivityMess(float connectivity) x_connectivity = (int)connectivity; } -void pix_opencv_floodfill :: markMess(float fperx, float fpery) +void pix_opencv_floodfill :: markMess(float fpx, float fpy) { int i; int inserted; int px, py; - if ( ( fperx < 0.0 ) || ( fperx > 1.0 ) || ( fpery < 0.0 ) || ( fpery > 1.0 ) ) + if ( ( fpx < 0.0 ) || ( fpx > comp_xsize ) || ( fpy < 0.0 ) || ( fpy > comp_ysize ) ) { return; } - px = (int)(fperx*comp_xsize); - py = (int)(fpery*comp_ysize); + px = (int)fpx; + py = comp_ysize-(int)fpy; inserted = 0; for ( i=0; i