22 #ifndef KJB_PSI_VISUALIZE_V1_H
23 #define KJB_PSI_VISUALIZE_V1_H
43 #include <boost/bind.hpp>
44 #include <boost/function.hpp>
52 class Track_visualizer :
public Video_player
55 typedef Track_visualizer Self;
56 typedef Video_player Base;
65 void set_camera(
const Perspective_camera& cam)
72 virtual void render()
const
76 cam_.prepare_for_rendering(
false);
77 render(trajectories_, colors_);
84 const std::map<pt::Entity_id,
85 std::vector<Vector3> >& colors)
const;
95 const std::vector<Vector3>& colors = std::vector<Vector3>())
const;
98 const std::map<pt::Entity_id, std::vector<Vector3> >&
106 return trajectories_;
111 Perspective_camera cam_;
112 std::map<pt::Entity_id, std::vector<Vector3> > colors_;
117 class Ground_truth_track_visualizer :
public Track_visualizer
119 typedef Ground_truth_track_visualizer Self;
120 typedef Track_visualizer Base;
123 Ground_truth_track_visualizer(
double threshold) :
128 threshold_(threshold)
135 const std::map<pt::Entity_id, std::vector<Vector3> >&
144 return get_trajectories();
148 virtual void render()
const
150 glDisable(GL_LINE_STIPPLE);
152 render_correspondence_lines();
154 glEnable(GL_LINE_STIPPLE);
155 glLineStipple(1, 0x00ff);
160 void render_correspondence_lines()
const;
164 std::map<pt::Entity_id, std::vector<Vector3> > hyp_colors_;
165 std::vector<boost::bimap<pt::Entity_id, pt::Entity_id> > correspondences_;
169 class Cylinder_world_visualizer
171 typedef Cylinder_world_visualizer Self;
174 Cylinder_world_visualizer(
double width,
double height):
188 using namespace boost;
190 wnd_.set_display_callback(bind(&Self::display,
this));
191 wnd_.set_keyboard_callback(bind(&Self::key,
this, _1, _2, _3));
193 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
194 glEnable(GL_LINE_SMOOTH);
196 glHint (GL_LINE_SMOOTH_HINT, GL_DONT_CARE);
201 Cylinder_world_visualizer(
double width,
double height,
double sample_period):
205 sample_period_(sample_period *1000),
213 using namespace boost;
215 wnd_.set_display_callback(bind(&Self::display,
this));
216 wnd_.set_keyboard_callback(bind(&Self::key,
this, _1, _2, _3));
218 init_animate_callback_();
221 void set_frame_rate(
double rate)
223 sample_period_ = rate;
224 init_animate_callback_();
227 void set_frames(
const std::vector<kjb::opengl::Sprite>& sprites,
size_t thinning)
229 frame_sprites_ = sprites;
230 frame_thinning_ = thinning;
242 void key(
unsigned char k,
int ,
int );
244 void set_entities(
const std::vector<std::vector<std::vector<Entity_state> > >& entities);
252 void set_boxes(
const std::vector<std::vector<std::vector<Bbox> > >& boxes,
size_t thinning = 1)
254 frames_boxes_ = boxes;
255 box_thinning_ = thinning;
262 void set_post_render_callback(
const boost::function0<void> cb)
264 post_render_callback_ = cb;
267 void draw_xz_plane();
269 void init_animate_callback_()
271 using namespace boost;
273 kjb::opengl::Glut::add_timer_callback(sample_period_, bind(&Self::animate,
this));
278 std::vector<std::vector<std::vector<Entity_state> > > entities_frames_;
281 size_t sample_period_;
286 kjb::opengl::Glut_window wnd_;
289 std::vector<kjb::opengl::Sprite> frame_sprites_;
290 size_t frame_thinning_;
292 std::vector<std::vector<std::vector<Bbox> > > frames_boxes_;
293 size_t box_thinning_;
295 boost::function0<void> post_render_callback_;
for k
Definition: APPgetLargeConnectedEdges.m:61
height
Definition: APPgetLargeConnectedEdges.m:33
void render_ground_plane()
Definition: psi_visualize.cpp:30
St_perspective_camera for modeling a perspective camera using the classic Forsyth and Ponce parametri...
Definition: perspective_camera.h:93
void render(const Cuboid &c)
Definition: psi_weighted_box.cpp:56
Represents a set of trajectories; it is a map from entity to trajectory.
Definition: tracking_trajectory.h:53
Generic_trajectory< Complete_state > Trajectory
Definition: pt_complete_trajectory.h:42
Generic_trajectory_map< Complete_state > Trajectory_map
Definition: pt_complete_trajectory.h:43
Support for error handling exception classes in libKJB.