| 69 | return self.frames[-self.input_frames:], reward, done |
| 70 | |
| 71 | def process_frame(self, last_frame, current_frame): |
| 72 | # Max last 2 frames to remove flicker |
| 73 | # TODO Use ALE color_averaging instead (current causes core dump) |
| 74 | frame = np.maximum(last_frame, current_frame) |
| 75 | |
| 76 | # Rescale image |
| 77 | frame = cv2.resize(frame, self.input_shape) |
| 78 | |
| 79 | # Convert to greyscale |
| 80 | frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) |
| 81 | |
| 82 | return frame |
| 83 | |
| 84 | def log_episode(self, step): |
| 85 | duration = time.time() - self.start_time |