cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
svlCCFileIO.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /* ex: set filetype=cpp softtabstop=4 shiftwidth=4 tabstop=4 cindent expandtab: */
3 
4 /*
5 
6  Author(s): Wen P. Liu
7  Created on: 2011
8 
9  (C) Copyright 2006-2007 Johns Hopkins University (JHU), All Rights
10  Reserved.
11 
12 --- begin cisst license - do not edit ---
13 
14 This software is provided "as is" under an open source license, with
15 no warranty. The complete license can be found in license.txt and
16 http://www.cisst.org/cisst/license.txt.
17 
18 --- end cisst license ---
19 */
20 
21 #ifndef _svlCCFileIO_h
22 #define _svlCCFileIO_h
24 
26 {
27 public:
28  enum formatEnum {ORIGINAL, IMPROVED}; // For subclass of svlCCFileIO for the DLR .pts type
29  // Constructor takes filename string of file to read in
30  svlCCFileIO(const char* filename): END(-1)
31  {
32  myFileName = filename;
33 
34  }
35  // Parses file into lines, and passes each line to ParseLine()
36  bool parseFile()
37  {
38  char buffer[200];
39  int lineNum = 0;
40  int sectionNum = 0;
41 
42  std::ifstream& fileStream = openFile(myFileName);
43  if(fileStream.bad())
44  return false;
45 
46  try{
47  while (fileStream.good() && !fileStream.eof() && !fileStream.fail())
48  {
49  if(sections[sectionNum]->lineNum < lineNum)
50  {
51  if(sections[sectionNum]->lineNum != END)
52  sectionNum++;
53  }
54 
55 
56  fileStream.getline(buffer,200,'\n');
57  svlCCFileIO::parseLine(buffer,sections[sectionNum]->fmt,lineNum);
58  lineNum++;
59 
60  if (fileStream.fail() && !fileStream.eof())
61  {
62  std::cout << "fileStream FAILED" << std::endl;
63  return false;
64  }
65  }
66  }catch(std::ios_base::failure)
67  {
68  std::cout << myFileName << " failed." << std::endl;
69  return false;
70  }
71 
72  return true;
73  }
74  // Virtual method to repack the file data into file-specific data structures
75  // implemented in detail in each subclass
76  virtual void repackData(){};
77 
78 protected:
79  // Object to keep track of file formats for different sections of files
81  {
82  public:
83  SectionFormat(int lnNum, const char* fmtarray)
84  {
85  lineNum = lnNum;
86  fmt = fmtarray;
87  }
88  int lineNum;
89  const char* fmt;
90  };
91  // Creates an ifstream object for the specified file
92  std::ifstream& openFile(const char* filename)
93  {
94  // from C++ for dummies
95  std::ifstream* pFileStream = new std::ifstream(filename);
96 
97  if (pFileStream->good())
98  {
99  std::cerr << "Sucessfully opened " << filename << std::endl;
100  }
101  else
102  {
103  std::cerr << "Could not open " << filename << std::endl;
104  }
105  return *pFileStream;
106  }
107 
108  //Parses a line from a file according to a format string
109  void parseLine(const char line[], const char format[], int lineNum)
110  {
111  char buffer[200];
112  int i = 0;
113  int numsRead = 0;
114  std::istringstream inp(line);
115  double d;
116 
117  while(format[i] != '\n')
118  {
119  if(format[i] == '#')
120  {
121  i++;
122  char delim = format[i];
123  inp.getline(buffer,200,delim);
124  std::istringstream inp2(buffer);
125  while(inp2 >> d) {
126  data[lineNum][numsRead] = (float)d;
127  numsRead++;
128  }
129  }
130  else
131  {
132  inp.getline(buffer,200,format[i]);
133  }
134  i++;
135  }
136  }
137 
138 
139  // parameters
140  const static bool debug = false;
141  const char* myFileName;
144  float data [500][12];
145  const int END;
146 
147 };
148 
149 //================== Subclass of svlCCFileIO for the DLR .pts type ==================//
151 {
152 public:
153  svlCCPointsFileIO(const char* filename, int fileFormat);
154  void repackData();
155  void repackData(IplImage* iplImage);
157  void showData();
158 
159  std::vector<cv::Point2f> imagePoints;
160  std::vector<cv::Point3f> calibrationGridPoints;
161  CvMat* worldToTCP;
162 
163 protected:
165  cv::Size imageSize;
166 
167 };
168 
169 //================== Subclass of svlCCFileIO for the DLR cameraCalibration.m type ==================//
171 {
172 public:
173  svlCCDLRCalibrationFileIO(const char* filename);
174  void repackData(int numImages);
175 
177  std::vector<CvMat*> cameraMatrices;
178  cv::Point2f focalLength;
179  cv::Point2f principalPoint;
180  float alpha;
182 
183 
184 protected:
185  const static bool debug = false;
186  void printCameraMatrix();
187 
188 };
189 
190 //================== Subclass of svlCCFileIO for the tracking .coords type ==================//
192 {
193 public:
194  svlCCTrackerCoordsFileIO(const char* filename);
195  void repackData();
196 
197  CvMat* worldToTCP;
198 
199 
200 protected:
201  const static bool debug = false;
202 
203 };
204 
205 #endif
A vector object of dynamic size.
Definition: vctDynamicVector.h:127
cv::Mat distCoeffs
Definition: svlCCFileIO.h:176
void parseLine(const char line[], const char format[], int lineNum)
Definition: svlCCFileIO.h:109
Definition: svlCCFileIO.h:25
cv::Size imageSize
Definition: svlCCFileIO.h:165
cv::Mat tcpToCamera
Definition: svlCCFileIO.h:176
Definition: svlCCFileIO.h:28
float alpha
Definition: svlCCFileIO.h:180
float errorCheck(vctDynamicVector< vctDynamicVector< vct3 > > Dc, vctDynamicVector< vctDynamicVector< vct3 > > Ac, vctDynamicVector< vctDynamicVector< vct3 > > Cc)
svlCCTrackerCoordsFileIO(const char *filename)
SectionFormat(int lnNum, const char *fmtarray)
Definition: svlCCFileIO.h:83
std::vector< CvMat * > cameraMatrices
Definition: svlCCFileIO.h:177
bool parseFile()
Definition: svlCCFileIO.h:36
Definition: svlCCFileIO.h:191
virtual void repackData()
Definition: svlCCFileIO.h:76
void IplImage
Definition: svlTypes.h:70
int numImages
Definition: svlCCFileIO.h:181
cv::Point2f focalLength
Definition: svlCCFileIO.h:178
const int END
Definition: svlCCFileIO.h:145
formatEnum
Definition: svlCCFileIO.h:28
CvMat * worldToTCP
Definition: svlCCFileIO.h:161
static const bool debug
Definition: svlCCFileIO.h:140
std::vector< cv::Point2f > imagePoints
Definition: svlCCFileIO.h:159
static const bool debug
Definition: svlCCFileIO.h:201
const char * fmt
Definition: svlCCFileIO.h:89
cv::Mat cameraMatrix
Definition: svlCCFileIO.h:176
float data[500][12]
Definition: svlCCFileIO.h:144
svlCCFileIO(const char *filename)
Definition: svlCCFileIO.h:30
Definition: svlCCFileIO.h:28
int lineNum
Definition: svlCCFileIO.h:88
SectionFormat * sections[12]
Definition: svlCCFileIO.h:143
Definition: svlCCFileIO.h:80
std::string Mat
Definition: svlTypes.h:72
std::vector< cv::Point3f > calibrationGridPoints
Definition: svlCCFileIO.h:160
Definition: svlCCFileIO.h:150
CvMat * worldToTCP
Definition: svlCCFileIO.h:197
static const bool debug
Definition: svlCCFileIO.h:185
const char * myFileName
Definition: svlCCFileIO.h:141
int fileFormat
Definition: svlCCFileIO.h:142
svlCCDLRCalibrationFileIO(const char *filename)
std::ifstream & openFile(const char *filename)
Definition: svlCCFileIO.h:92
cv::Point2f principalPoint
Definition: svlCCFileIO.h:179
Definition: svlCCFileIO.h:170
int pointsCount
Definition: svlCCFileIO.h:164
svlCCPointsFileIO(const char *filename, int fileFormat)