Basic Image AlgorithmS Library  2.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
showmdcam.cpp
1 #include "../MDcam.hh"
2 #include <MIPGui/MIPGui.hh>
3 #include <MIPParam/Param.hh>
4 
5 int main(int argc, char *argv[])
6 {
7  Param params;
8  MDcam cams;
9  int numcams;
10  bool done = false;
11  int downsample;
12  char c = 0;
13  Camera<unsigned char> *GrabImage;
14  Camera<unsigned char> pic2;
15  MIPGui *win;
16  int res;
17 
18  params.AddParameter(MIPPARAM_INT,"downsample","Show downsampled by 2^n images",'d');
19  params.AddParameter(MIPPARAM_STRING,"cameras","Configuration file (default: cameras.conf",'c');
20  params.AddParameter(MIPPARAM_INT,"scanbus","Only scan the bus number N and write camerafile");
21  params.SetParameter("downsample",0);
22  params.SetParameter("scanbus",-1);
23 
24  res = params.ParseCommandLine(argc, argv);
25  if (res <0) exit(1);
26 
27  // Init
28  string camfile;
29  params.GetParameter("cameras",(string)camfile);
30  if (camfile == NULL)
31  camfile = "cameras.conf";
32  int scanbus;
33  params.GetParameter("scanbus",scanbus);
34  if (scanbus >=0) {
35  ofstream ofs(camfile);
36  if (!ofs) {
37  perror(camfile);
38  exit(1);
39  }
40  cams.ScanBus(scanbus,ofs);
41  ofs.close();
42  exit(0);
43  }
44 
45  params.GetParameter("downsample",downsample);
46  cams.SetDebugLevel(D_MDCAM_INIT );
47 
48  numcams = cams.InitCameras(camfile);
49  if (numcams <0) exit(0);
50 
51  win = new MIPGui[numcams];
52  GrabImage = new Camera<unsigned char>[numcams];
53  for (int i=0; i<numcams; i++) {
54  char title[128];
55  sprintf(title,"Camera: %d",cams.GetID(i));
56  win[i].SetTitle(title);
57  cams.GetCamera(i)->InitImage(GrabImage[i]);
58 
59  }
60  cams.PreGrab();
61  // mainloop with show
62  while (!done) {
63  // gettimeofday(&now, NULL);
64  // end = start;
65  // start = (now.tv_sec % 1000) * 1000 + (now.tv_usec / 1000);
66  // fps = 1.0 / (float)(start-end) * 1000.0 ;
67  c =0;
68  cams.GrabSingle(GrabImage);
69  for (int i=0; i<numcams; i++) {
70  char tmp;
71  if (downsample >0)
72  pic2.GetDownsampledCopy(GrabImage[i],downsample);
73  else
74  pic2.ToGrey(GrabImage[i]);
75  win[i].ShowImage(pic2);
76  tmp = win[i].CheckForKeyEvent();
77  if (tmp >0) c = tmp;
78  }
79  switch (c) {
80  case 27:
81  done = true;
82  break;
83  }
84  }
85  cams.PostGrab();
86  cams.ReleaseCameras();
87  delete[] win;
88  return 0;
89 }