00001 /*! @file ObjRec/test-xmlImage.C test reading image information from xml files */ 00002 00003 // //////////////////////////////////////////////////////////////////// // 00004 // The iLab Neuromorphic Vision C++ Toolkit - Copyright (C) 2000-2005 // 00005 // by the University of Southern California (USC) and the iLab at USC. // 00006 // See http://iLab.usc.edu for information about this project. // 00007 // //////////////////////////////////////////////////////////////////// // 00008 // Major portions of the iLab Neuromorphic Vision Toolkit are protected // 00009 // under the U.S. patent ``Computation of Intrinsic Perceptual Saliency // 00010 // in Visual Environments, and Applications'' by Christof Koch and // 00011 // Laurent Itti, California Institute of Technology, 2001 (patent // 00012 // pending; application number 09/912,225 filed July 23, 2001; see // 00013 // http://pair.uspto.gov/cgi-bin/final/home.pl for current status). // 00014 // //////////////////////////////////////////////////////////////////// // 00015 // This file is part of the iLab Neuromorphic Vision C++ Toolkit. // 00016 // // 00017 // The iLab Neuromorphic Vision C++ Toolkit is free software; you can // 00018 // redistribute it and/or modify it under the terms of the GNU General // 00019 // Public License as published by the Free Software Foundation; either // 00020 // version 2 of the License, or (at your option) any later version. // 00021 // // 00022 // The iLab Neuromorphic Vision C++ Toolkit is distributed in the hope // 00023 // that it will be useful, but WITHOUT ANY WARRANTY; without even the // 00024 // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR // 00025 // PURPOSE. See the GNU General Public License for more details. // 00026 // // 00027 // You should have received a copy of the GNU General Public License // 00028 // along with the iLab Neuromorphic Vision C++ Toolkit; if not, write // 00029 // to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, // 00030 // Boston, MA 02111-1307 USA. // 00031 // //////////////////////////////////////////////////////////////////// // 00032 // 00033 // Primary maintainer for this file: Lior Elazary <elazary@usc.edu> 00034 // $HeadURL: svn://isvn.usc.edu/software/invt/trunk/saliency/src/ObjRec/test-xmlImage.C $ 00035 // $Id: test-xmlImage.C 9412 2008-03-10 23:10:15Z farhan $ 00036 // 00037 00038 00039 #include "Component/ModelManager.H" 00040 #include "Image/Image.H" 00041 #include "Image/ImageSet.H" 00042 #include "Image/DrawOps.H" 00043 #include "Media/TestImages.H" 00044 #include "Raster/Raster.H" 00045 #include "GUI/DebugWin.H" 00046 00047 00048 int main(const int argc, const char **argv) 00049 { 00050 00051 ModelManager *mgr; 00052 MYLOGVERB = LOG_INFO; 00053 mgr = new ModelManager("Test ObjRec"); 00054 00055 if (mgr->parseCommandLine( 00056 (const int)argc, (const char**)argv, "<images set xml file>", 1, 1) == false) 00057 return 1; 00058 00059 mgr->start(); 00060 00061 const char *imageSetFile = mgr->getExtraArg(0).c_str(); 00062 //load the images 00063 TestImages testImages(imageSetFile, TestImages::XMLFILE); 00064 00065 for (uint scene=0; scene<testImages.getNumScenes(); scene++) //look at all the scenes 00066 { 00067 Image<PixRGB<byte> > sceneImg = testImages.getScene(scene); 00068 TestImages::SceneData sceneData = testImages.getSceneData(scene); 00069 00070 LINFO("Scene name %s", sceneData.filename.c_str()); 00071 for (uint obj=0; obj<testImages.getNumObj(scene); obj++) //look at all the objects in the scene 00072 { 00073 TestImages::ObjData objData = testImages.getObjectData(scene, obj); 00074 LINFO("Image: %i %s %s", objData.id, objData.description.c_str(), objData.filename.c_str()); 00075 printf("Image: %i %s %s\n", objData.id, objData.description.c_str(), objData.filename.c_str()); 00076 //SHOWIMG(objData.img); 00077 00078 00079 //draw an outline of the object in the scene 00080 int lineWidth = int(sceneImg.getWidth()*0.005); 00081 00082 00083 std::vector<Point2D<int> > objPoly = objData.polygon; 00084 Point2D<int> p1 = objPoly[0]; 00085 Point2D<int> centerLoc = p1; 00086 for(uint i=1; i<objPoly.size(); i++) 00087 { 00088 drawLine(sceneImg, p1, objPoly[i], PixRGB<byte>(255, 0, 0), lineWidth); 00089 p1 = objPoly[i]; 00090 centerLoc.i += p1.i; centerLoc.j += p1.j; 00091 } 00092 drawLine(sceneImg, p1, objPoly[0], PixRGB<byte>(255, 0, 0), lineWidth); //close the polygon 00093 00094 centerLoc.i /= objPoly.size(); 00095 centerLoc.j /= objPoly.size(); 00096 writeText(sceneImg, centerLoc, objData.description.c_str(), PixRGB<byte>(255), PixRGB<byte>(0)); 00097 00098 } 00099 SHOWIMG(sceneImg); 00100 //char filename[255]; 00101 //sprintf(filename, "outlinedImages/%s.ppm", sceneData.filename.c_str()); 00102 //LINFO("Write image %s\n", filename); 00103 //Raster::WriteRGB(sceneImg, filename); 00104 00105 } 00106 00107 // stop all our ModelComponents 00108 mgr->stop(); 00109 00110 return 0; 00111 00112 } 00113