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) { int buff_size = BUFFER_SIZE; if (argc == 2) { buff_size = atoi (argv[1]); std::cout << "Setting buffer size to " << buff_size << " frames " << std::endl; } else { std::cout << "Using default buffer size of " << buff_size << " frames " << std::endl; } buff.setCapacity (buff_size); std::cout << "Starting the producer and consumer threads..." << std::endl; std::cout << "Press Ctrl-C to end" << std::endl; boost::thread producer (grabAndSend); boost::this_thread::sleep (boost::posix_time::seconds (2)); boost::thread consumer (receiveAndProcess); signal (SIGINT, ctrlC); producer.join (); { boost::mutex::scoped_lock io_lock (io_mutex); std::cout << "Producer done" << std::endl; } consumer.join (); std::cout << "Consumer done" << std::endl; 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); }