int main (int argc, char** argv) { print_highlight ("PCL OpenNI Recorder for saving buffered PCD (binary compressed to disk). See %s -h for options.\n", argv[0]); int buff_size = BUFFER_SIZE; if (find_switch (argc, argv, "-h") || find_switch (argc, argv, "--help")) { print_info ("Options are: \n" " -xyz = save only XYZ data, even if the device is RGB capable\n" " -shift = use OpenNI shift values rather than 12-bit depth\n" " -buf X = use a buffer size of X frames (default: "); print_value ("%d", buff_size); print_info (")\n"); return (0); } bool just_xyz = find_switch (argc, argv, "-xyz"); openni_wrapper::OpenNIDevice::DepthMode depth_mode = openni_wrapper::OpenNIDevice::OpenNI_12_bit_depth; if (find_switch (argc, argv, "-shift")) depth_mode = openni_wrapper::OpenNIDevice::OpenNI_shift_values; if (parse_argument (argc, argv, "-buf", buff_size) != -1) print_highlight ("Setting buffer size to %d frames.\n", buff_size); else print_highlight ("Using default buffer size of %d frames.\n", buff_size); print_highlight ("Starting the producer and consumer threads... Press Cltr+C to end\n"); OpenNIGrabber grabber (""); if (grabber.providesCallback<OpenNIGrabber::sig_cb_openni_point_cloud_rgba> () && !just_xyz) { print_highlight ("PointXYZRGBA enabled.\n"); PCDBuffer<PointXYZRGBA> buf; buf.setCapacity (buff_size); Producer<PointXYZRGBA> producer (buf, depth_mode); boost::this_thread::sleep (boost::posix_time::seconds (2)); Consumer<PointXYZRGBA> consumer (buf); signal (SIGINT, ctrlC); producer.stop (); consumer.stop (); } else { print_highlight ("PointXYZ enabled.\n"); PCDBuffer<PointXYZ> buf; buf.setCapacity (buff_size); Producer<PointXYZ> producer (buf, depth_mode); boost::this_thread::sleep (boost::posix_time::seconds (2)); Consumer<PointXYZ> consumer (buf); signal (SIGINT, ctrlC); producer.stop (); consumer.stop (); } return (0); }
int main (int argc, char** argv) { print_highlight ("PCL OpenNI Recorder for saving buffered PCD (binary compressed to disk). See %s -h for options.\n", argv[0]); std::string device_id (""); int buff_size = BUFFER_SIZE; openni_wrapper::OpenNIDriver& driver = openni_wrapper::OpenNIDriver::getInstance (); if (driver.getNumberDevices () > 0) { cout << "Device Id not set, using first device." << endl; } bool just_xyz = find_switch (argc, argv, "-xyz"); openni_wrapper::OpenNIDevice::DepthMode depth_mode = openni_wrapper::OpenNIDevice::OpenNI_12_bit_depth; if (find_switch (argc, argv, "-shift")) depth_mode = openni_wrapper::OpenNIDevice::OpenNI_shift_values; if (parse_argument (argc, argv, "-buf", buff_size) != -1) print_highlight ("Setting buffer size to %d frames.\n", buff_size); else print_highlight ("Using default buffer size of %d frames.\n", buff_size); print_highlight ("Starting the producer and consumer threads... Press 's' to capture and 'q' to quit\n"); OpenNIGrabber grabber (device_id); if (grabber.providesCallback<OpenNIGrabber::sig_cb_openni_point_cloud_rgba> () && !just_xyz) { print_highlight ("PointXYZRGBA enabled.\n"); PCDBuffer<PointXYZRGBA> buf; buf.setCapacity (buff_size); Producer<PointXYZRGBA> producer (buf, depth_mode); // boost::this_thread::sleep (boost::posix_time::seconds (2)); string prefix = "frame"; pcl::console::parse_argument (argc, argv, "-name", prefix); Consumer<PointXYZRGBA> consumer (buf, prefix); // consumer.pcd_nb() = 0; producer.stop (); consumer.stop (); } return (0); }