640x480的分辨率,如果设定最小检测人脸的宽度为50像素的话,一帧需要200ms甚至400ms,完全无法接受。
之前如果是设定最小检测人脸宽度为150的情况下,大概需要40ms,而我首先将画面线性缩小3倍甚至5倍再检测,能将时间消耗减少到15ms左右。但是实际上要求人在较远位置也能检测到,这样人脸的宽度只有40像素左右,之前的方法依然无法达到实时。
现在有这么一个想法,先用低代价的方法减小搜索范围。首先将画面进行分割,比如分割成4份,如果某一份内部肤色检测出来皮肤区域面积超过多少,才对其进行检测。
而具体实行的时候可能涉及到更进一步分割,还有分割之间的重叠(避免把本来面部出现的位置分割成多块)等问题。
不知道各位有没有其他更好的思路。