licornea_tools
grabber.h
Go to the documentation of this file.
1 #ifndef LICORNEA_KINECT_LIVE_GRABBER_H_
2 #define LICORNEA_KINECT_LIVE_GRABBER_H_
3 
4 #include "../../lib/opencv.h"
5 #include "../freenect2.h"
6 #include "../kinect_internal_parameters.h"
7 #include <libfreenect2/libfreenect2.hpp>
8 #include <libfreenect2/frame_listener_impl.h>
9 #include <libfreenect2/registration.h>
10 #include <libfreenect2/packet_pipeline.h>
11 #include <libfreenect2/logger.h>
12 #include <string>
13 #include <memory>
14 #include <vector>
15 
16 namespace tlz {
17 
18 class grabber {
19 public:
21  color = 1<<0,
23  depth = 1<<2,
24  bigdepth = 1<<3,
25  ir = 1<<4
26  };
27 
28 private:
29  int frame_types_;
30  bool released_;
31 
32  libfreenect2::Freenect2 context_;
33  libfreenect2::CpuPacketPipeline* pipeline_;
34  libfreenect2::SyncMultiFrameListener listener_;
35  libfreenect2::FrameMap frames_;
36  libfreenect2::Freenect2Device* device_;
37  std::unique_ptr<libfreenect2::Registration> registration_;
38  libfreenect2::Frame undistorted_depth_;
39  libfreenect2::Frame undistorted_ir_;
40  libfreenect2::Frame registered_color_;
41  libfreenect2::Frame bigdepth_;
42 
43  bool has_(frame_type_value t) const { return ((frame_types_ & t) != 0); }
44  int freenect2_frame_types_() const;
45 
46 public:
47  explicit grabber(int frame_types);
48  ~grabber();
49 
50  bool grab();
51  void release();
52 
53  libfreenect2::Freenect2& context() { return context_; }
54  libfreenect2::Freenect2Device& device() { return *device_; }
55  libfreenect2::Registration& registration() { return *registration_; }
57 
58  cv::Mat_<cv::Vec3b> get_color_frame();
59  cv::Mat_<cv::Vec3b> get_registered_color_frame();
60  cv::Mat_<uchar> get_ir_frame(float min_ir = 0, float max_ir = 0xffff, bool undistorted = false);
61  cv::Mat_<ushort> get_original_ir_frame(bool undistorted = false);
62  cv::Mat_<float> get_depth_frame(bool undistorted = false);
63  cv::Mat_<float> get_bigdepth_frame();
64 };
65 
66 }
67 
68 #endif
cv::Mat_< uchar > get_ir_frame(float min_ir=0, float max_ir=0xffff, bool undistorted=false)
cv::Mat_< cv::Vec3b > get_color_frame()
kinect_internal_parameters internal_parameters()
frame_type_value
Definition: grabber.h:20
cv::Mat_< ushort > get_original_ir_frame(bool undistorted=false)
libfreenect2::Registration & registration()
Definition: grabber.h:55
cv::Mat_< cv::Vec3b > get_registered_color_frame()
cv::Mat_< float > get_depth_frame(bool undistorted=false)
libfreenect2::Freenect2 & context()
Definition: grabber.h:53
void release()
cv::Mat_< float > get_bigdepth_frame()
grabber(int frame_types)
libfreenect2::Freenect2Device & device()
Definition: grabber.h:54