4 #include <ed_sensor_integration_msgs/GetImage.h>
19 #include <opencv2/highgui/highgui.hpp>
29 tstruct = *localtime(&now);
33 strftime(buf,
sizeof(buf),
"%Y-%m-%d-%H-%M-%S", &tstruct);
40 int main(
int argc,
char **argv)
49 <<
" <SPACE> Save image to disk" <<
std::endl
50 <<
" + Increase frames per second" <<
std::endl
51 <<
" - decrease frames per second" <<
std::endl
58 ros::init(argc, argv,
"ed_image_saver");
60 ros::ServiceClient cl_get_image = nh.serviceClient<ed_sensor_integration_msgs::GetImage>(
"ed/kinect/get_image");
64 ros::Time t_last_saved(0);
67 ed_sensor_integration_msgs::GetImage srv;
74 ros::Time t_now = ros::Time::now();
79 if (t_now - t_last_saved > ros::Duration(1.0 / fps))
86 if (!cl_get_image.call(srv))
88 std::cout <<
"Could not call service '" << cl_get_image.getService() <<
"'." <<
std::endl;
89 ros::Duration(1.0).sleep();
101 t_last_saved = t_now;
107 cv::Mat img =
image.getRGBImage().clone();
108 cv::putText(img,
"Press <SPACE> to save", cv::Point(10, 20), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 255, 0));
111 s_fps << fps <<
" fps";
113 cv::putText(img, s_fps.
str(), cv::Point(img.cols - 60, 20), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 255, 0));
115 if (img.cols == 0 || img.rows == 0)
120 cv::imshow(
"Image Saver", img);
121 unsigned char key = cv::waitKey(30);
126 if (key == 27 || key ==
'q')
132 fps = std::min<double>(10, fps + 1);
136 fps = std::max<double>(1, fps - 1);
140 const std::string& filename = srv.request.filename;
148 f_out.
write(
reinterpret_cast<char*
>(&srv.response.rgbd_data[0]), srv.response.rgbd_data.size());
154 f_meta.
open((filename +
".json").c_str());
155 f_meta << srv.response.json_meta_data;
160 cv::Mat img =
image.getRGBImage().clone();
161 cv::putText(img,
"Saved to " + filename +
".json", cv::Point(10, 20), cv::FONT_HERSHEY_SIMPLEX, 0.5, cv::Scalar(0, 255, 0));
163 cv::imshow(
"Image Saver", img);