OpenPose  1.0.0rc2
OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Macros
producer.hpp
Go to the documentation of this file.
1 #ifndef OPENPOSE_PRODUCER_PRODUCER_HPP
2 #define OPENPOSE_PRODUCER_PRODUCER_HPP
3 
4 #include <chrono>
5 #include <opencv2/core/core.hpp> // cv::Mat
6 #include <opencv2/highgui/highgui.hpp> // capProperties of OpenCV
9 
10 namespace op
11 {
17  {
18  public:
24  explicit Producer(const ProducerType type);
25 
30  virtual ~Producer();
31 
36  cv::Mat getFrame();
37 
43  virtual std::string getFrameName() = 0;
44 
50  void setProducerFpsMode(const ProducerFpsMode fpsMode);
51 
57  {
58  return mType;
59  }
60 
66  virtual bool isOpened() const = 0;
67 
72  virtual void release() = 0;
73 
81  virtual double get(const int capProperty) = 0;
82 
90  virtual void set(const int capProperty, const double value) = 0;
91 
92  virtual double get(const ProducerProperty property) = 0;
93 
94  virtual void set(const ProducerProperty property, const double value) = 0;
95 
96  protected:
103  void checkFrameIntegrity(cv::Mat& frame);
104 
109  void flipAndRotate(cv::Mat& cvMat) const;
110 
115  void ifEndedResetOrRelease();
116 
120  void keepDesiredFrameRate();
121 
126  virtual cv::Mat getRawFrame() = 0;
127 
128  private:
129  const ProducerType mType;
130  ProducerFpsMode mProducerFpsMode;
131  std::array<double, (int)ProducerProperty::Size> mProperties;
132  unsigned int mNumberEmptyFrames;
133  // For ProducerFpsMode::OriginalFps
134  bool mTrackingFps;
135  unsigned long long mFirstFrameTrackingFps;
136  unsigned long long mNumberFramesTrackingFps;
137  unsigned int mNumberSetPositionTrackingFps;
138  std::chrono::high_resolution_clock::time_point mClockTrackingFps;
139 
141  };
142 }
143 
144 #endif // OPENPOSE_PRODUCER_PRODUCER_HPP
#define DELETE_COPY(className)
Definition: macros.hpp:24
ProducerFpsMode
Definition: enumClasses.hpp:6
ProducerProperty
Definition: enumClasses.hpp:12
Definition: producer.hpp:16
ProducerType getType()
Definition: producer.hpp:56
ProducerType
Definition: enumClasses.hpp:25
#define OP_API
Definition: macros.hpp:9