save_frames.cpp
Go to the documentation of this file.
1 #include <ros/ros.h>
2 #include <image_transport/image_transport.h>
3 #include <cv_bridge/cv_bridge.h>
4 #include <sensor_msgs/image_encodings.h>
5 #include <opencv2/imgproc/imgproc.hpp>
6 #include <opencv2/highgui/highgui.hpp>
7 #include <boost/filesystem.hpp>
8 #include <boost/format.hpp>
9 
10 using namespace std;
11 
13 {
14 
15  public:
16  SaveFrames(ros::NodeHandle& nh_):
17  nh(nh_),
18  it(nh_)
19  {
20  ros::NodeHandle private_node("~");
21 
22  seq_number = 0;
23 
24  string path;
25  private_node.param("output_path",path,string("no output path defined"));
26 
27  output_path = path;
28 
29  subscriber = it.subscribe("image_raw", 1000, &SaveFrames::imageHandler,this);
30  }
31 
32  void imageHandler(const sensor_msgs::ImageConstPtr& msg)
33  {
34  cv_bridge::CvImagePtr cv_ptr;
35 
36  try
37  {
38  cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8);
39  }
40  catch (cv_bridge::Exception& e)
41  {
42  ROS_ERROR("cv_bridge exception: %s", e.what());
43  return;
44  }
45 
46  boost::filesystem::path file_url = output_path / (boost::format("%06.d.png") % seq_number).str();
47 
48  cv::imwrite(file_url.string(),cv_ptr->image);
49  seq_number++;
50  }
51 
52  uint seq_number;
53 
54  boost::filesystem::path output_path;
55 
56  sensor_msgs::Image image;
57 
58  image_transport::Subscriber subscriber;
59 
60  ros::NodeHandle nh;
61  image_transport::ImageTransport it;
62 };
63 
64 int main(int argc,char**argv)
65 {
66  ros::init(argc, argv, "save_frames");
67  ros::NodeHandle node;
68 
69  SaveFrames save_frames(node);
70 
71  ros::spin();
72 
73 
74  return 0;
75 }
int main(int argc, char **argv)
Definition: save_frames.cpp:64
void imageHandler(const sensor_msgs::ImageConstPtr &msg)
Definition: save_frames.cpp:32
image_transport::ImageTransport it
Definition: save_frames.cpp:61
uint seq_number
Definition: save_frames.cpp:52
image_transport::Subscriber subscriber
Definition: save_frames.cpp:58
SaveFrames(ros::NodeHandle &nh_)
Definition: save_frames.cpp:16
sensor_msgs::Image image
Definition: save_frames.cpp:56
ros::NodeHandle nh
Definition: save_frames.cpp:60
boost::filesystem::path output_path
Definition: save_frames.cpp:54


multisensor_aquisition
Author(s): Jorge Almeida
autogenerated on Mon Mar 2 2015 01:32:28