@@ -99,6 +99,8 @@ int main(int argc, char *argv[])
9999
100100 std::string serial = freenect2.getDefaultDeviceSerialNumber ();
101101
102+ bool viewer_enabled = true ;
103+
102104 for (int argI = 1 ; argI < argc; ++argI)
103105 {
104106 const std::string arg (argv[argI]);
@@ -130,6 +132,10 @@ int main(int argc, char *argv[])
130132 {
131133 serial = arg;
132134 }
135+ else if (arg == " -noviewer" )
136+ {
137+ viewer_enabled = false ;
138+ }
133139 else
134140 {
135141 std::cout << " Unknown argument: " << arg << std::endl;
@@ -167,9 +173,13 @@ int main(int argc, char *argv[])
167173
168174 libfreenect2::Registration* registration = new libfreenect2::Registration (dev->getIrCameraParams (), dev->getColorCameraParams ());
169175
176+ size_t framecount = 0 ;
170177#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
171178 Viewer viewer;
172- viewer.initialize ();
179+ if (viewer_enabled)
180+ viewer.initialize ();
181+ #else
182+ viewer_enabled = false ;
173183#endif
174184
175185 while (!protonect_shutdown)
@@ -181,15 +191,22 @@ int main(int argc, char *argv[])
181191
182192 registration->apply (rgb, depth, &undistorted, ®istered);
183193
194+ framecount++;
195+ if (!viewer_enabled)
196+ {
197+ if (framecount % 100 == 0 )
198+ std::cout << " The viewer is turned off. Received " << framecount << " frames. Ctrl-C to stop." << std::endl;
199+ listener.release (frames);
200+ continue ;
201+ }
202+
184203#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
185204 viewer.addFrame (" RGB" , rgb);
186205 viewer.addFrame (" ir" , ir);
187206 viewer.addFrame (" depth" , depth);
188207 viewer.addFrame (" registered" , ®istered);
189208
190- protonect_shutdown = viewer.render ();
191- #else
192- protonect_shutdown = true ;
209+ protonect_shutdown = protonect_shutdown || viewer.render ();
193210#endif
194211
195212 listener.release (frames);
0 commit comments