def __init__(self, display_servers, cams, mask_dir, trigger): self.mask_dir = mask_dir cam_handlers = [] #turn on projectors for d in display_servers: dsc = display_client.DisplayServerProxy(d,wait=True) dsc.enter_2dblit_mode() dsc.show_pixels(dsc.new_image(dsc.IMAGE_COLOR_WHITE)) for cam in cams: rospy.loginfo("Generating mask for cam %s" % cam) cam_handlers.append(CameraHandler(cam,debug=False)) self.trigger_proxy_rate = rospy.ServiceProxy(trigger+'/set_framerate', camera_trigger.srv.SetFramerate) self.trigger_proxy_rate(1.0) rospy.loginfo("Set framerate to 1fps") self.runner = SimultaneousCameraRunner(cam_handlers) s = rospy.Service('~mask_start', std_srvs.srv.Empty, self._change_mode_start) s = rospy.Service('~mask_finish', std_srvs.srv.Empty, self._change_mode_finish) self.mode = self.MODE_WAIT
class GenMasks: MODE_WAIT = 0 MODE_FINISHED = 1 MODE_COLLECT = 2 def __init__(self, display_servers, cams, mask_dir, trigger): self.mask_dir = mask_dir cam_handlers = [] #turn on projectors for d in display_servers: dsc = display_client.DisplayServerProxy(d,wait=True) dsc.enter_2dblit_mode() dsc.show_pixels(dsc.new_image(dsc.IMAGE_COLOR_WHITE)) for cam in cams: rospy.loginfo("Generating mask for cam %s" % cam) cam_handlers.append(CameraHandler(cam,debug=False)) self.trigger_proxy_rate = rospy.ServiceProxy(trigger+'/set_framerate', camera_trigger.srv.SetFramerate) self.trigger_proxy_rate(1.0) rospy.loginfo("Set framerate to 1fps") self.runner = SimultaneousCameraRunner(cam_handlers) s = rospy.Service('~mask_start', std_srvs.srv.Empty, self._change_mode_start) s = rospy.Service('~mask_finish', std_srvs.srv.Empty, self._change_mode_finish) self.mode = self.MODE_WAIT def _change_mode_start(self, req): self.mode = self.MODE_COLLECT return std_srvs.srv.EmptyResponse() def _change_mode_finish(self, req): self.mode = self.MODE_FINISHED return std_srvs.srv.EmptyResponse() def run(self): while not rospy.is_shutdown() and self.mode != self.MODE_FINISHED: if self.mode == self.MODE_WAIT: pass elif self.mode == self.MODE_COLLECT: rospy.loginfo("Collecting images") self.runner.get_images(1) imgs = self.runner.result_as_nparray for cam in imgs: fname = self.mask_dir + "/%s-new.png" % cam.split("/")[-1] print fname, imgs[cam].shape,imgs[cam].dtype scipy.misc.imsave(fname,imgs[cam].squeeze()) rospy.loginfo("wrote %s " % fname) self.mode = self.MODE_WAIT rospy.sleep(0.1)