(self)
| 51 | self.tracker.add_target(self.frame, rect) |
| 52 | |
| 53 | def run(self): |
| 54 | while True: |
| 55 | playing = not self.paused and not self.rect_sel.dragging |
| 56 | if playing or self.frame is None: |
| 57 | ret, frame = self.cap.read() |
| 58 | if not ret: |
| 59 | break |
| 60 | self.frame = frame.copy() |
| 61 | |
| 62 | w, h = getsize(self.frame) |
| 63 | vis = np.zeros((h, w*2, 3), np.uint8) |
| 64 | vis[:h,:w] = self.frame |
| 65 | if len(self.tracker.targets) > 0: |
| 66 | target = self.tracker.targets[0] |
| 67 | vis[:,w:] = target.image |
| 68 | draw_keypoints(vis[:,w:], target.keypoints) |
| 69 | x0, y0, x1, y1 = target.rect |
| 70 | cv2.rectangle(vis, (x0+w, y0), (x1+w, y1), (0, 255, 0), 2) |
| 71 | |
| 72 | if playing: |
| 73 | tracked = self.tracker.track(self.frame) |
| 74 | if len(tracked) > 0: |
| 75 | tracked = tracked[0] |
| 76 | cv2.polylines(vis, [np.int32(tracked.quad)], True, (255, 255, 255), 2) |
| 77 | for (x0, y0), (x1, y1) in zip(np.int32(tracked.p0), np.int32(tracked.p1)): |
| 78 | cv2.line(vis, (x0+w, y0), (x1, y1), (0, 255, 0)) |
| 79 | draw_keypoints(vis, self.tracker.frame_points) |
| 80 | |
| 81 | self.rect_sel.draw(vis) |
| 82 | cv2.imshow('plane', vis) |
| 83 | ch = cv2.waitKey(1) |
| 84 | if ch == ord(' '): |
| 85 | self.paused = not self.paused |
| 86 | if ch == 27: |
| 87 | break |
| 88 | |
| 89 | |
| 90 | if __name__ == '__main__': |
no test coverage detected