[Phission-cvs] phission/examples/cpp/DDImageTest/src DDImageTest.cpp, 1.5, 1.6
Brought to you by:
pthoren
From: Philip T. <pt...@us...> - 2006-07-24 14:54:04
|
Update of /cvsroot/phission/phission/examples/cpp/DDImageTest/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv7061/DDImageTest/src Modified Files: DDImageTest.cpp Log Message: Added command line argument parameters for all ddimage_Filter parameters Added a --file parameter to allow use of phAvcodecSource if it's available Added a live 'set' method testing option to the command lie arguments and code to execute the live 'set' method testing Added more help to the printing when --help is given Index: DDImageTest.cpp =================================================================== RCS file: /cvsroot/phission/phission/examples/cpp/DDImageTest/src/DDImageTest.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** DDImageTest.cpp 13 Jun 2006 18:12:18 -0000 1.5 --- DDImageTest.cpp 24 Jul 2006 14:54:01 -0000 1.6 *************** *** 14,21 **** /* ------------------------------------------------------------------------ */ ! int glbl_disable_displays = 0; ! int glbl_do_timing = 0; ! int glbl_threshold = 0; ! int glbl_pixel_count = 0; /* ------------------------------------------------------------------------ */ --- 14,27 ---- /* ------------------------------------------------------------------------ */ ! int glbl_disable_displays = 0; ! int glbl_do_timing = 0; ! int glbl_threshold = 15; ! int glbl_stride = 2; ! int glbl_pixel_threshold = 4; ! int glbl_block_filter = ddimage_BlockKernel; ! int glbl_set_test = 0; ! #if PH_HAVE_AVCODEC ! char *glbl_filename = NULL; ! #endif /* ------------------------------------------------------------------------ */ *************** *** 26,29 **** --- 32,45 ---- printf("\t\t\t--disable-display\tdisable the allocation, opening or any use of a display.\n"); printf("\t\t\t--test <value>\tsleep 'value' seconds and then close test\n"); + printf("\t\t\t--stride/-s <stride> The stride between differenced frames\n"); + printf("\t\t\t--pixels/-p <threshold0-16> The number of pixels that must be\n"); + printf("\t\t\t present in the 4x4 block filter.\n"); + printf("\t\t\t--block_filter/-b <1:2> 1-ddimage_BlockStandard 2-ddimage_BlockKernel\n"); + printf("\t\t\t Chooses the type of 4x4 block filter operation\n"); + printf("\t\t\t (default:2)\n"); + printf("\t\t\t--threshold/-t <value0-255> The threshold to determine if the\n"); + printf("\t\t\t differenced frame pixels are different \n"); + printf("\t\t\t enough to have motion\n"); + printf("\t\t\t--settest Test the ddimage_Filter::set() method by alternating the values \n"); printf("\n\n"); *************** *** 37,57 **** phFUNCTION("main") ! unsigned int i = 0; ! ! unsigned int nDisplays = 1; int displaysOpen= 1; char title[255]; phDisplayInterface **display = NULL; ! ! #ifdef WIN32 ! VFWSource *capture = new VFWSource(); ! #else ! V4LCapture *capture = new V4LCapture(); ! #endif ! ! phPipeline *pipeline = new phPipeline(); ! ! convert_Filter *convert = new convert_Filter(phImageGREY8); ! ddimage_Filter *ddimage = NULL; /* Utility class to ease the starting and stopping of displays, captures and --- 53,70 ---- phFUNCTION("main") ! uint32_t i = 0; ! uint32_t width = 320; ! uint32_t height = 240; ! uint32_t nDisplays = 3; int displaysOpen= 1; char title[255]; phDisplayInterface **display = NULL; ! phImageCapture *capture = NULL; ! ! phPipeline *pipeline = new phPipeline(); ! ! gaussianBlur_Filter *gauss = new gaussianBlur_Filter(); ! convert_Filter *convert = new convert_Filter(phImageGREY8); ! ddimage_Filter *ddimage = NULL; /* Utility class to ease the starting and stopping of displays, captures and *************** *** 84,91 **** phCHECK_RC(rc,NULL,"arg_parser.add"); ! rc = arg_parser.add("--pixels",&glbl_pixel_count,phARG_INT); phCHECK_RC(rc,NULL,"arg_parser.add"); ! rc = arg_parser.add("-p",&glbl_pixel_count,phARG_INT); phCHECK_RC(rc,NULL,"arg_parser.add"); rc = arg_parser.parse(argc,argv); --- 97,122 ---- phCHECK_RC(rc,NULL,"arg_parser.add"); ! rc = arg_parser.add("--pixels",&glbl_pixel_threshold,phARG_INT); phCHECK_RC(rc,NULL,"arg_parser.add"); ! rc = arg_parser.add("-p",&glbl_pixel_threshold,phARG_INT); ! phCHECK_RC(rc,NULL,"arg_parser.add"); ! ! rc = arg_parser.add("--stride",&glbl_stride,phARG_INT); ! phCHECK_RC(rc,NULL,"arg_parser.add"); ! rc = arg_parser.add("-s",&glbl_stride,phARG_INT); ! phCHECK_RC(rc,NULL,"arg_parser.add"); ! ! rc = arg_parser.add("--block",&glbl_block_filter,phARG_INT); ! phCHECK_RC(rc,NULL,"arg_parser.add"); ! rc = arg_parser.add("-b",&glbl_block_filter,phARG_INT); ! phCHECK_RC(rc,NULL,"arg_parser.add"); ! ! rc = arg_parser.add("--settest",&glbl_set_test,phARG_BOOL); ! phCHECK_RC(rc,NULL,"arg_parser.add"); ! ! #if PH_HAVE_AVCODEC ! rc = arg_parser.add("--file",&glbl_filename,phARG_CHAR); phCHECK_RC(rc,NULL,"arg_parser.add"); + #endif rc = arg_parser.parse(argc,argv); *************** *** 95,109 **** if (test) glbl_do_timing = 1; ! if (glbl_threshold > 255) glbl_threshold = 255; ! if (glbl_threshold < 0) glbl_threshold = 0; ! if (glbl_pixel_count > 16) glbl_pixel_count = 16; ! if (glbl_pixel_count < 0) glbl_pixel_count = 0; ddimage = new ddimage_Filter(glbl_threshold, ! glbl_pixel_count); /* 1.) Setup the capture device parameters */ ! capture->set(320,240,"/dev/video0"); ! capture->setChannel(2); ! rc = system.addCapture(capture); phPRINT_RC(rc,NULL,"system.addCapture(capture)"); --- 126,164 ---- if (test) glbl_do_timing = 1; ! if (glbl_threshold > 255) glbl_threshold = 255; ! if (glbl_threshold < 0) glbl_threshold = 0; ! if (glbl_pixel_threshold > 16) glbl_pixel_threshold = 16; ! if (glbl_pixel_threshold < 0) glbl_pixel_threshold = 0; ddimage = new ddimage_Filter(glbl_threshold, ! glbl_stride, ! glbl_pixel_threshold, ! glbl_block_filter ); /* 1.) Setup the capture device parameters */ ! #if PH_HAVE_AVCODEC ! if (glbl_filename != NULL) ! { ! capture = new phAvcodecSource(); ! capture->setPath(glbl_filename); ! //capture->set(width,height,glbl_filename); ! width = capture->getWidth(); ! height = capture->getHeight(); ! phFree(glbl_filename); ! } ! else ! #endif ! { ! #ifdef WIN32 ! capture = new VFWSource(); ! #else ! capture = new V4LCapture(); ! #endif ! capture->set(width,height,"/dev/video0"); ! capture->setChannel(2); ! capture->setBrightness(28000); ! capture->setContrast(28000); ! capture->setColor(52000); ! capture->setHue(32000); ! } rc = system.addCapture(capture); phPRINT_RC(rc,NULL,"system.addCapture(capture)"); *************** *** 116,120 **** sprintf(title,"DDImageTest[%u]",i); ! display[i] = new X11Display(320,240,title); rc = system.addDisplay(display[i]); --- 171,176 ---- sprintf(title,"DDImageTest[%u]",i); ! display[i] = new X11Display(width,height,title); ! display[i]->move(10,100+(i*width)); rc = system.addDisplay(display[i]); *************** *** 132,140 **** * display updates when a processing has been completed * for each loop */ ! for (i = 0; i < nDisplays; i++) ! { ! display[i]->setLiveSourceInput(pipeline->getLiveSourceOutput()); ! } /* <> Attach the capture image to the live source input of the * Pipeline so processing is done automatically once the --- 188,199 ---- * display updates when a processing has been completed * for each loop */ ! if (nDisplays > 0) ! display[0]->setLiveSourceInput(pipeline->getLiveSourceOutput()); ! ! if (nDisplays > 1) ! display[1]->setLiveSourceInput(capture->getLiveSourceOutput()); + if (nDisplays > 2) + display[2]->setLiveSourceInput(ddimage->getMaskImage()); /* <> Attach the capture image to the live source input of the * Pipeline so processing is done automatically once the *************** *** 162,165 **** --- 221,275 ---- while (displaysOpen) { + if (glbl_set_test) + { + glbl_threshold += 10; + /* The absolute maximum for threshold is 255, but let's not go that + * far because it won't give motion outline results anyway */ + if (glbl_threshold > 225) + { + /* Set glbl_threshold to the program default */ + glbl_threshold = 15; + + glbl_pixel_threshold++; + /* The absolute maximum for pixel threshold is 16, but let's not + * go that far because it won't give good motion results anyway + * */ + if (glbl_pixel_threshold > 14) + { + /* 0 == no block filtering */ + glbl_pixel_threshold = 0; + + glbl_block_filter = + glbl_block_filter == ddimage_BlockStandard ? + ddimage_BlockKernel : ddimage_BlockStandard; + + glbl_stride++; + /* Let's restrice ourselves to a stride of 10 */ + if (glbl_stride > 10) + { + glbl_stride = 1; + } + } + } + + #if 1 + phPROGRESS("thresh:%u pixthresh:%u block_filter:%s stride:%u\n", + glbl_threshold, + glbl_pixel_threshold, + (glbl_block_filter == ddimage_BlockKernel) ? + "ddimage_BlockKernel" : "ddimage_BlockStandard", + glbl_stride ); + #endif + + rc = ddimage->set(glbl_threshold, + glbl_stride, + glbl_pixel_threshold, + glbl_block_filter ); + phPRINT_RC(rc,NULL,"ddimage->set"); + + /* We need to wait at least 2 seconds, otherwise we won't be + * testing the current settings long enough */ + phMSleep(2000); + } if (glbl_do_timing) { *************** *** 223,226 **** --- 333,337 ---- phDelete(ddimage); phDelete(convert); + phDelete(gauss); phDelete(pipeline); |