00001 /*test-Attentionater.C*/ 00002 00003 #include "Component/ModelManager.H" 00004 #include "Media/FrameSeries.H" 00005 #include "Transport/FrameIstream.H" 00006 #include "Media/MediaOpts.H" 00007 #include "Image/Image.H" 00008 #include "Image/Pixels.H" 00009 #include "Raster/Raster.H" 00010 #include "Image/CutPaste.H" 00011 #include "BeoSub/IsolateColor.H" 00012 #include "Image/DrawOps.H" 00013 #include "Image/ColorOps.H" 00014 #include "GUI/XWinManaged.H" 00015 #include "Neuro/EnvVisualCortex.H" 00016 #include "Image/ShapeOps.H" 00017 #include "Image/MathOps.H" 00018 #include "Util/MathFunctions.H" 00019 #include "SeaBee/Attentionator.H" 00020 00021 00022 int main(int argc, char* argv[]) 00023 { 00024 00025 MYLOGVERB = LOG_INFO; 00026 00027 ModelManager manager("Attentionater Tester"); 00028 00029 nub::soft_ref<InputFrameSeries> ifs(new InputFrameSeries(manager)); 00030 manager.addSubComponent(ifs); 00031 00032 nub::soft_ref<Attentionator> attentionator(new Attentionator(manager)); 00033 manager.addSubComponent(attentionator); 00034 00035 // nub::soft_ref<EnvVisualCortex> EVC(new EnvVisualCortex(manager)); 00036 //manager.addSubComponent(EVC); 00037 00038 manager.exportOptions(MC_RECURSE); 00039 00040 // Parse command-line: 00041 if (manager.parseCommandLine(argc, argv, 00042 "[image {*.ppm}]", 00043 0, 1) 00044 == false) return(1); 00045 00046 00047 manager.setOptionValString(&OPT_InputFrameDims, convertToString(ifs->peekDims())); 00048 00049 manager.setModelParamVal("InputFrameDims", ifs->peekDims(), 00050 MC_RECURSE | MC_IGNORE_MISSING); 00051 00052 manager.start(); 00053 int w = ifs->getWidth(), h = ifs->getHeight(); 00054 std::string dims = convertToString(Dims(w, h)); 00055 LINFO("image size: [%dx%d]", w, h); 00056 00057 00058 bool goforever = true; 00059 00060 rutz::shared_ptr<XWinManaged> dispWin; 00061 dispWin.reset(new XWinManaged(Dims(w*2,h*2), 0, 0, "test-Attentionator Display")); 00062 00063 // input and output image 00064 Image< PixRGB<byte> > img(w,h, NO_INIT); 00065 00066 while(goforever) 00067 { 00068 Image< PixRGB<byte> > dispImg(w*2,h*2, ZEROS); 00069 00070 ifs->updateNext(); 00071 img = ifs->readRGB(); 00072 attentionator->updateImage(img); 00073 00074 if(!img.initialized()) {Raster::waitForKey(); break; } 00075 00076 inplacePaste(dispImg, img, Point2D<int>(0,0)); 00077 inplacePaste(dispImg, attentionator->getSaliencyMap(), Point2D<int>(0,img.getHeight())); 00078 drawCross(img, attentionator->getSalientPoint(), PixRGB <byte> (0, 255, 0), 5, 3); 00079 inplacePaste(dispImg, img, Point2D<int>(w,0)); 00080 00081 dispWin->drawImage(dispImg, 0, 0); 00082 } 00083 Raster::waitForKey(); 00084 // get ready to terminate: 00085 manager.stop(); 00086 return 0; 00087 } 00088 00089 // ###################################################################### 00090 /* So things look consistent in everyone's emacs... */ 00091 /* Local Variables: */ 00092 /* indent-tabs-mode: nil */ 00093 /* End: */