Magick++  7.0.10
analyze.cpp
Go to the documentation of this file.
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;
16 int 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 }
virtual const char * what() const
Definition: Exception.cpp:56
void process(std::string name_, const ::ssize_t argc_, const char **argv_)
Definition: Image.cpp:3944
STL namespace.
int main(int argc, char **argv)
Definition: analyze.cpp:16
void attribute(const std::string name_, const char *value_)
Definition: Image.cpp:1972
Definition: Blob.h:15
MagickPPExport void InitializeMagick(const char *path_)
Definition: Functions.cpp:43