def start_record(self):
self.start_time = time.time()
curr_time = self.start_time
while self.end_time < 0 or curr_time <= self.end_time:
try:
canvas = np.zeros((self.output_height, self.output_width, 3), np.uint8)
for frame_w in self.frame_wrappers:
f = frame_w.get_latest(at_time=curr_time)
if f is None:
continue
resized = cv2.resize(f, (frame_w.target_w, frame_w.target_h))
canvas[frame_w.target_y:frame_w.target_y+frame_w.target_h, frame_w.target_x:frame_w.target_x+frame_w.target_w] = resized
# rospy.sleep(0.01)
self.video_writer.write(canvas)
if self.pub_img:
try:
self.pub_img.publish(self.bridge.cv2_to_imgmsg(canvas, 'bgr8'))
except CvBridgeError as e:
rospy.logerr('cvbridgeerror, e={}'.format(str(e)))
pass
rospy.sleep(0.01)
if rospy.is_shutdown() and self.end_time < 0:
self.terminate()
while curr_time + self.interval > time.time():
rospy.sleep(self.interval)
curr_time += self.interval
except KeyboardInterrupt:
self.terminate()
continue
self.video_writer.release()
评论列表
文章目录