|
28 | 28 | #include <iostream> |
29 | 29 | #include <signal.h> |
30 | 30 |
|
31 | | -#include <opencv2/opencv.hpp> |
32 | | - |
33 | 31 | #include <libfreenect2/libfreenect2.hpp> |
34 | 32 | #include <libfreenect2/frame_listener_impl.h> |
35 | 33 | #include <libfreenect2/threading.h> |
36 | 34 | #include <libfreenect2/registration.h> |
37 | 35 | #include <libfreenect2/packet_pipeline.h> |
| 36 | +#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT |
| 37 | +#include "viewer.h" |
| 38 | +#endif |
| 39 | + |
38 | 40 |
|
39 | 41 | bool protonect_shutdown = false; |
40 | 42 |
|
@@ -135,24 +137,30 @@ int main(int argc, char *argv[]) |
135 | 137 |
|
136 | 138 | libfreenect2::Registration* registration = new libfreenect2::Registration(dev->getIrCameraParams(), dev->getColorCameraParams()); |
137 | 139 |
|
| 140 | +#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT |
| 141 | + Viewer viewer; |
| 142 | + viewer.initialize(); |
| 143 | +#endif |
| 144 | + |
138 | 145 | while(!protonect_shutdown) |
139 | 146 | { |
140 | 147 | listener.waitForNewFrame(frames); |
141 | 148 | libfreenect2::Frame *rgb = frames[libfreenect2::Frame::Color]; |
142 | 149 | libfreenect2::Frame *ir = frames[libfreenect2::Frame::Ir]; |
143 | 150 | libfreenect2::Frame *depth = frames[libfreenect2::Frame::Depth]; |
144 | 151 |
|
145 | | - cv::imshow("rgb", cv::Mat(rgb->height, rgb->width, CV_8UC4, rgb->data)); |
146 | | - cv::imshow("ir", cv::Mat(ir->height, ir->width, CV_32FC1, ir->data) / 20000.0f); |
147 | | - cv::imshow("depth", cv::Mat(depth->height, depth->width, CV_32FC1, depth->data) / 4500.0f); |
148 | | - |
149 | | - registration->apply(rgb,depth,&undistorted,®istered); |
| 152 | + registration->apply(rgb, depth, &undistorted, ®istered); |
150 | 153 |
|
151 | | - cv::imshow("undistorted", cv::Mat(undistorted.height, undistorted.width, CV_32FC1, undistorted.data) / 4500.0f); |
152 | | - cv::imshow("registered", cv::Mat(registered.height, registered.width, CV_8UC4, registered.data)); |
| 154 | +#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT |
| 155 | + viewer.addFrame("RGB", rgb); |
| 156 | + viewer.addFrame("ir", ir); |
| 157 | + viewer.addFrame("depth", depth); |
| 158 | + viewer.addFrame("registered", ®istered); |
153 | 159 |
|
154 | | - int key = cv::waitKey(1); |
155 | | - protonect_shutdown = protonect_shutdown || (key > 0 && ((key & 0xFF) == 27)); // shutdown on escape |
| 160 | + protonect_shutdown = viewer.render(); |
| 161 | +#else |
| 162 | + protonect_shutdown = true; |
| 163 | +#endif |
156 | 164 |
|
157 | 165 | listener.release(frames); |
158 | 166 | //libfreenect2::this_thread::sleep_for(libfreenect2::chrono::milliseconds(100)); |
|
0 commit comments