OpenPose  1.0.0rc2
OpenPose: A Real-Time Multi-Person Key-Point Detection And Multi-Threading C++ Library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends 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 
42  std::vector<cv::Mat> getFrames();
43 
48  virtual std::vector<cv::Mat> getCameraMatrices() = 0;
49 
54  virtual std::vector<cv::Mat> getCameraExtrinsics() = 0;
55 
60  virtual std::vector<cv::Mat> getCameraIntrinsics() = 0;
61 
67  virtual std::string getNextFrameName() = 0;
68 
74  void setProducerFpsMode(const ProducerFpsMode fpsMode);
75 
81  {
82  return mType;
83  }
84 
90  virtual bool isOpened() const = 0;
91 
96  virtual void release() = 0;
97 
105  virtual double get(const int capProperty) = 0;
106 
114  virtual void set(const int capProperty, const double value) = 0;
115 
120  double get(const ProducerProperty property);
121 
127  void set(const ProducerProperty property, const double value);
128 
129  protected:
136  void checkFrameIntegrity(cv::Mat& frame);
137 
142  void flipAndRotate(cv::Mat& cvMat) const;
143 
148  void ifEndedResetOrRelease();
149 
153  void keepDesiredFrameRate();
154 
159  virtual cv::Mat getRawFrame() = 0;
160 
166  virtual std::vector<cv::Mat> getRawFrames() = 0;
167 
168  private:
169  const ProducerType mType;
170  ProducerFpsMode mProducerFpsMode;
171  std::array<double, (int)ProducerProperty::Size> mProperties;
172  unsigned int mNumberEmptyFrames;
173  // For ProducerFpsMode::OriginalFps
174  bool mTrackingFps;
175  unsigned long long mFirstFrameTrackingFps;
176  unsigned long long mNumberFramesTrackingFps;
177  unsigned int mNumberSetPositionTrackingFps;
178  std::chrono::high_resolution_clock::time_point mClockTrackingFps;
179 
181  };
182 }
183 
184 #endif // OPENPOSE_PRODUCER_PRODUCER_HPP
#define DELETE_COPY(className)
Definition: macros.hpp:31
ProducerFpsMode
Definition: enumClasses.hpp:6
ProducerProperty
Definition: enumClasses.hpp:12
Definition: producer.hpp:16
ProducerType getType()
Definition: producer.hpp:80
ProducerType
Definition: enumClasses.hpp:25
#define OP_API
Definition: macros.hpp:16
std::string string
Definition: cl2.hpp:574