1 // 2 // Demonstrate using the 'analyze' process module to compute 3 // image statistics. 4 // 5 // Copyright Bob Friesenhahn, 2003, 2004 6 // 7 // Usage: analyze file... 8 // 9 10 #include <Magick++.h> 11 #include <iostream> 12 #include <iomanip> 13 #include <list> 14 using namespace std; 15 using namespace Magick; main(int argc,char ** argv)16int main(int argc,char **argv) 17 { 18 if ( argc < 2 ) 19 { 20 cout << "Usage: " << argv[0] << " file..." << endl; 21 exit( 1 ); 22 } 23 24 // Initialize ImageMagick install location for Windows 25 InitializeMagick(*argv); 26 27 { 28 std::list<std::string> attributes; 29 30 attributes.push_back("TopLeftColor"); 31 attributes.push_back("TopRightColor"); 32 attributes.push_back("BottomLeftColor"); 33 attributes.push_back("BottomRightColor"); 34 attributes.push_back("filter:brightness:mean"); 35 attributes.push_back("filter:brightness:standard-deviation"); 36 attributes.push_back("filter:brightness:kurtosis"); 37 attributes.push_back("filter:brightness:skewness"); 38 attributes.push_back("filter:saturation:mean"); 39 attributes.push_back("filter:saturation:standard-deviation"); 40 attributes.push_back("filter:saturation:kurtosis"); 41 attributes.push_back("filter:saturation:skewness"); 42 43 char **arg = &argv[1]; 44 while ( *arg ) 45 { 46 string fname(*arg); 47 try { 48 cout << "File: " << fname << endl; 49 Image image( fname ); 50 51 /* Analyze module does not require an argument list */ 52 image.process("analyze",0,0); 53 54 list<std::string>::iterator pos = attributes.begin(); 55 while(pos != attributes.end()) 56 { 57 cout << " " << setw(16) << setfill(' ') << setiosflags(ios::left) 58 << *pos << " = " << image.attribute(*pos) << endl; 59 pos++; 60 } 61 } 62 catch( Exception &error_ ) 63 { 64 cout << error_.what() << endl; 65 } 66 ++arg; 67 } 68 } 69 70 return 0; 71 } 72