1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| import matplotlib.pyplot as plt from matplotlib.patches import Ellipse, Circle
def visualize_gaze_sample(sample): """可视化视线标注""" fig, ax = plt.subplots(1, 1, figsize=(10, 8)) ax.imshow(sample['image']) for i, (eye_center, color) in enumerate([ (sample['eyeball_center_2D'][0], 'red'), (sample['eyeball_center_2D'][1], 'blue') ]): ax.plot(eye_center[0], eye_center[1], 'o', color=color, markersize=10, label=f'{"左" if i == 0 else "右"}眼球中心') for i, (pupil_center, color) in enumerate([ (sample['pupil_center_2D'][0], 'orange'), (sample['pupil_center_2D'][1], 'cyan') ]): ax.plot(pupil_center[0], pupil_center[1], 's', color=color, markersize=8, label=f'{"左" if i == 0 else "右"}瞳孔中心') for i, (iris_contour, color) in enumerate([ (sample['iris_contour_2D'][0], 'red'), (sample['iris_contour_2D'][1], 'blue') ]): ax.plot(iris_contour[:, 0], iris_contour[:, 1], '-', color=color, linewidth=2, alpha=0.7) ax.legend() ax.set_title('GazeGene 3D眼球标注可视化') ax.axis('off') plt.tight_layout() plt.savefig('gazegene_visualization.png', dpi=150) plt.show()
dataset = GazeGeneDataset("./GazeGene_normalized") sample = dataset.load_sample(subject_id=44, camera_id=0, frame_id=100) visualize_gaze_sample(sample)
|