From af844aaf5fe467a9fd3cbc95ab7b3873f03309a6 Mon Sep 17 00:00:00 2001 From: "N.N." Date: Fri, 25 Sep 2009 14:36:52 +0000 Subject: added positions of detected contours svn path=/trunk/externals/pdp_opencv/; revision=12449 --- pdp_opencv_hu_compare.cc | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'pdp_opencv_hu_compare.cc') diff --git a/pdp_opencv_hu_compare.cc b/pdp_opencv_hu_compare.cc index 8b222fb..09b3536 100755 --- a/pdp_opencv_hu_compare.cc +++ b/pdp_opencv_hu_compare.cc @@ -40,6 +40,7 @@ typedef struct pdp_opencv_hu_compare_struct t_outlet *x_outlet0; t_outlet *x_patternout; t_outlet *x_dataout; + t_outlet *x_posout; int x_packet0; int x_packet1; @@ -54,6 +55,7 @@ typedef struct pdp_opencv_hu_compare_struct int x_method; int x_minsize; float x_cdistance; + t_atom rlist[5]; IplImage *image, *gray; IplImage *imager, *grayr; @@ -112,6 +114,7 @@ static void pdp_opencv_hu_compare_process_rgb(t_pdp_opencv_hu_compare *x) cvFindContours( x->gray, mstorage, &contourl, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0) ); + i=0; if ( contourl && x->x_bcontourr ) { contourlp=contourl; @@ -126,11 +129,18 @@ static void pdp_opencv_hu_compare_process_rgb(t_pdp_opencv_hu_compare *x) { cvRectangle( x->gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(255,255,255), 2, 8 , 0 ); cvDrawContours( x->gray, contourlp, CV_RGB(255,255,255), CV_RGB(255,255,255), 0, 1, 8, cvPoint(0,0) ); + SETFLOAT(&x->rlist[0], i++); + SETFLOAT(&x->rlist[1], rect.x); + SETFLOAT(&x->rlist[2], rect.y); + SETFLOAT(&x->rlist[3], rect.width); + SETFLOAT(&x->rlist[4], rect.height); + outlet_list( x->x_posout, 0, 5, x->rlist ); } else { cvRectangle( x->gray, cvPoint(rect.x,rect.y), cvPoint(rect.x+rect.width,rect.y+rect.height), CV_RGB(128,128,128), 2, 8 , 0 ); cvDrawContours( x->gray, contourlp, CV_RGB(128,128,128), CV_RGB(128,128,128), 0, 1, 8, cvPoint(0,0) ); + } } } @@ -298,6 +308,7 @@ void *pdp_opencv_hu_compare_new(t_floatarg f) x->x_outlet0 = outlet_new(&x->x_obj, &s_anything); x->x_patternout = outlet_new(&x->x_obj, &s_anything); x->x_dataout = outlet_new(&x->x_obj, &s_anything); + x->x_posout = outlet_new(&x->x_obj, &s_anything); x->x_packet0 = -1; x->x_packet1 = -1; -- cgit v1.2.1