输出
在介绍了如何获得探测结果以后,我们接下来介绍结果变量的构成。
如果没有探测到任何面部
变量为空。更确切地说,变量是一个零元素数组(即在Python语言里显示为“[ ]”)
如果探测到N个面部
变量结构包括两个字段:[ [ TimeStampField ] [ Face_info_0 , Face_info_1, . . . , Face_info_N-1, Time_Filtered_Reco_info ] ]
with:
- TimeStampField = [ TimeStamp_seconds, Timestamp_microseconds ]。这个字段是用来执行探测的图像的时间戳。
- Face_info = [ ShapeInfo, ExtraInfo ]。每个探测到的面部都有一个Face_info字段。
ShapeInfo = [ 0, alpha, beta, sizeX, sizeY ]。alpha和beta是用摄像头角度表示的面部位置 - sizeX和sizeY是面孔在摄像头角度中的大小。
ExtraInfo = [ Reco_info_0, Reco_info_1, ..., Reco_info_M ]
其中,Reco_info_0 = [ faceID, score_reco, face_label, left_eye_points, right_eye_points, left_eyebrow_points, right_eyebrow_points, nose_points, mouth_points ]
其中:
- faceID:面孔的ID编号
- score_reco:由识别进程返回的评分(越高越好)
- face_label:识别出的面孔名称
- xxxx_eye_points = [ eyeCenter_x, eyeCenter_y, noseSideLimit_x, noseSideLimit_y, earSideLimit_x, earSideLimit_y, topLimit_x, topLimit_y, bottomLimit_x, bottomLimit_y, midTopEarLimit_x, midTopEarLimit_y, midTopNoseLimit_x, midTopNoseLimit_y ]
- xxxx_eyebrow_points = [ noseSideLimit_x, noseSideLimit_y, center_x, center_y, earSideLimit_x, earSideLimit_y ]
- nose_points = [ bottomCenterLimit_x, bottomCenterLimit_y, bottomLeftLimit_x, bottomLeftLimit_y, bottomRightLimit_x, bottomRightLimit_y ]
- mouth_points = [ leftLimit_x, leftLimit_y, rightLimit_x, rightLimit_y, topLimit_x, topLimit_y, bottomLimit_x, bottomLimit_y, midTopLeftLimit_x, midTopLeftLimit_y, midTopRightLimit_x, midTopRightLimit_y, midBottomRightLimit_x, midBottomRightLimit_y, midBottomLeftLimit_x, midBottomLeftLimit_y ]
以摄像头角度给出以上所有坐标。
- Time_Filtered_Reco_info可等于:
[],这说明没有新情况
[ 2 face_label ],这说明识别出一个面孔
[ 3 [ face_label_0, ..., face_label_P ] ],这说明识别出数个面孔
[ 4 ],这说明探测到一个面孔,但超过8秒后仍未能识别。获得这个小结果时,如需要,可学习这个面孔。