vrcore  0.45
visuReal Messkern
 All Classes Files Functions Variables
vario_inset.h
1 #ifndef VARIO_INSET_H
2 #define VARIO_INSET_H
3 
4 namespace vr
5 {
6 class FrontalViewImage;
7 
9 {
10  friend class FrontalViewImage;
11 
12  std::vector<FrontalViewImage> top_;
13  std::vector<FrontalViewImage> middle_;
14  std::vector<FrontalViewImage> bottom_;
15 
16  double cvd_[LATERAL_SIDE];
17  // Anker: erc; erc -> pupil
18  Line zeroSightLine_[LATERAL_SIDE];
19  cv::CascadeClassifier faceCascade, eyeCascade;
20  ExposureArrangement arrangement_;
21 public:
22  ReadingMeasurement(const ExposureArrangement arrangement);
24 
25  float getReadingDistance();
26  void getVarioInset(double& R, double& L);
27  void addImage(const VarioInsetPos varioInsetPos, const size_t index,
28  const char* fileName, const StatusInfo statusInfo,
29  const double centers [5][2], const StatusInfo markStatusInfo [5],
30  const double irisCenters [2][2], const StatusInfo irisStatusInfo [2]);
31  void get(std::vector<FrontalViewImage>& vec, const size_t index, StatusInfo& statusInfo,
32  double centers [5][2], StatusInfo markStatusInfo [5],
33  double irisCenters [2][2], StatusInfo irisStatusInfo [2]);
34  void get(const VarioInsetPos varioInsetPos, const size_t index, StatusInfo& statusInfo,
35  double centers [5][2], StatusInfo markStatusInfo [5],
36  double irisCenters [2][2], StatusInfo irisStatusInfo [2]);
37  void setZeroSightLine(const LateralSide side, const Line& line) { zeroSightLine_[side] = line; };
38  inline void setCorneaVertexDistance(const LateralSide side, const double cvd) { cvd_[side] = cvd; };
39 };
40 
42 {
43  void compute(cv::Mat&);
44  void process();
45  bool process(cv::Mat&);
46 
47  ReadingMeasurement& parent_;
48  std::string fileName_;
49  size_t index_;
50  float insetR_;
51  float insetL_;
52  float readingDistance_;
53 public:
54  FrontalViewImage(ReadingMeasurement& parent, ExposureArrangement arrangement,
55  const size_t index, const char* fileName, const StatusInfo statusInfo,
56  const double centers [5][2], const StatusInfo markStatusInfo [5],
57  const double irisCenters [2][2], const StatusInfo irisStatusInfo [2]);
59  FrontFeatures(src),
60  parent_(src.parent_),
61  fileName_(src.fileName_),
62  index_(src.index_),
63  insetR_(src.insetR_),
64  insetL_(src.insetL_),
65  readingDistance_(src.readingDistance_)
66  {};
67  FrontalViewImage(const FrontalViewImage&& src) noexcept :
68  FrontFeatures(std::move(src)),
69  parent_(src.parent_),
70  fileName_(src.fileName_),
71  index_(src.index_),
72  insetR_(src.insetR_),
73  insetL_(src.insetL_),
74  readingDistance_(src.readingDistance_)
75  {};
76  ~FrontalViewImage() noexcept;
77  inline void get(const Feature& f, double point[2], StatusInfo& status) const
78  {
79  cv::Point2f center = f.getCenter();
80  point[0] = center.x;
81  point[1] = center.y;
82  status = f.getStatus();
83  };
84 
85  inline void set(Feature& f, const double center[2], const StatusInfo status)
86  {
87  f.setCenter(cv::Point2f(center[0], center[1]));
88  f.setStatus(status);
89  };
90  bool get(const size_t index, StatusInfo& statusInfo,
91  double centers [5][2], StatusInfo markStatusInfo [5],
92  double irisCenters [2][2], StatusInfo irisStatusInfo [2]);
93  bool getReadingDistance(float&);
94  void getInsetData(float& rval, float&lval, bool& rgood, bool& lgood);
95 };
96 
97 }
98 
99 #endif // VARIO_INSET_H
Definition: vario_inset.h:41
void setCenter(const cv::Point2f &center)
Definition: features.h:108
Definition: front_features.h:20
Definition: features.h:68
FeatureStatus getStatus() const
Status der Feature-Suche in der Frontalaufnahme.
Definition: front_features.h:98
Definition: vario_inset.h:8
Gerade im Raum.
Definition: algorithms.h:22