报错代码段
mp_drawing.draw_landmarks(
image=frame,
landmark_list=face_landmarks,
connections=mp.solutions.face_mesh.FACEMESH_IRISES, ##眼睛
landmark_drawing_spec=None,
connection_drawing_spec=mp.solutions.drawing_styles
.get_default_face_mesh_iris_connections_style()
)
去drawing utils库中看了一下函数,发现landmarks的列表长度为468,但是关于瞳孔connections的索引下标在468~478之间,无法正常的索引landmarks的检测值。
问题的根源在定义mesh_face检测函数时,里面有一个参数是refine_landmarks。查阅说明得知该参数默认为False, 即不定位瞳孔的10个关键mark,所以列表长度只有468,如果这时候去将瞳孔的点连接,会出现越界的情况。
将构建函数的参数refine_landmarks 初值设为true解决。