def on_msg_camera_stream(self, msg): """Camera stream callback method. Invoked upon the receipt of a message on the camera stream. """ self._logger.info('{} received frame {}'.format( self.name, msg.timestamp)) start_time = time.time() assert msg.encoding == 'BGR', 'Expects BGR frames' image = np.expand_dims(msg.frame.transpose([2, 0, 1]), axis=0) tensor = torch.tensor(image).float().cuda() / 255.0 output = self._network(tensor) # XXX(ionel): Check if the model outputs Carla Cityscapes values or # correct Cityscapes values. output = transform_to_cityscapes_palette( torch.argmax(output, dim=1).cpu().numpy()[0]) output = rgb_to_bgr(output) if self._flags.visualize_segmentation_output: add_timestamp(msg.timestamp, output) cv2.imshow(self.name, output) cv2.waitKey(1) # Get runtime in ms. runtime = (time.time() - start_time) * 1000 self._csv_logger.info('{},{},"{}",{}'.format(time_epoch_ms(), self.name, msg.timestamp, runtime)) output_msg = SegmentedFrameMessage(output, runtime, msg.timestamp) self.get_output_stream(self._output_stream_name).send(output_msg)
def on_msg_camera_stream(self, msg): """Camera stream callback method. Invoked upon the receipt of a message on the camera stream. """ self._logger.info('{} received frame {}'.format( self.name, msg.timestamp)) start_time = time.time() assert msg.encoding == 'BGR', 'Expects BGR frames' image = torch.from_numpy(msg.frame.transpose([2, 0, 1 ])).unsqueeze(0).float() image_var = Variable(image, requires_grad=False, volatile=True) final = self._model(image_var)[0] _, pred = torch.max(final, 1) pred = pred.cpu().data.numpy()[0] image_np = self._pallete[pred.squeeze()] # After we apply the pallete, the image is in RGB format image_np = rgb_to_bgr(image_np) if self._flags.visualize_segmentation_output: add_timestamp(msg.timestamp, image_np) cv2.imshow(self.name, image_np) cv2.waitKey(1) # Get runtime in ms. runtime = (time.time() - start_time) * 1000 self._csv_logger.info('{},{},"{}",{}'.format(time_epoch_ms(), self.name, msg.timestamp, runtime)) output_msg = SegmentedFrameMessage(image_np, runtime, msg.timestamp) self.get_output_stream(self._output_stream_name).send(output_msg)
def on_right_camera_msg(self, msg): with self._lock: # used as bgr_to_rgb, need RGB frames img = rgb_to_bgr(msg.frame).astype(np.uint8) img = preprocess.crop(img) processed = preprocess.get_transform(augment=False) img = processed(img) self._right_imgs.append(img) if self._left_imgs: self.eval_depth(msg)
def display_front_frame(self, msg): frame = transform_to_cityscapes_palette(msg.frame) img = Image.fromarray(np.uint8(frame)) open_cv_image = rgb_to_bgr(np.array(img)) cv2.imshow(self.name, open_cv_image) cv2.waitKey(1)