对于一些常用的人脸库常常会提供对应的人脸框的位置以及人脸的特征点的坐标。虽然往往会有68个特征点的坐标,但是如果是用于人脸对齐,并不需要用到所有的点坐标。所以知道特征点的检测顺序能够帮助我们很快的找到我们所需要的特定点坐标。
如图1所示,图中将68个特征点的检测顺序一次标注了出来。(图片摘自http://blog.csdn.net/zmdsjtu/article/details/53454071)
当然不是所有的数据库都提供68个特征点,也有78个点,例如图2所示。(图片摘自http://blog.163.com/huai_jing@126/blog/static/1718619832013111525150259/)
对于更加少的特征点的出现顺序与前面类似,可以推理出来。例如5个特征点的坐标信息可以判别出来每个坐标对应的是那个部位(左右眼,鼻子,左右嘴角)。
当然不是所有的特征点都会按照这个顺序进行变化,但是可以通过简单的算法将每个点一次显示出来,从而可以找到我们所需要的点。(python)
def point_xy(s):
first = s.find(':')
x = s[0:first]
y = s[first+1:]
return x,y
for eachpoint in img_point:
[x,y] = point_xy(eachpoint)
[x,y] = [float(x),float(y)]
cv2.circle(im,(int(x),int(y)),2,(0,0,255),-1)
cv2.imshow('img',img)
cv2.waitKey(0)
其中 img_point是保存了所有特征点的一个数组。这样就能够一步一步的看出每个特征点的顺序。