下面的article 将为您提供幕后工作的概览,我强烈建议您阅读这篇文章。
更高的相机分辨率是否更适合 Haar-Cascades?
不一定,cascade.detectMultiScale 具有针对各种输入宽度、高度情况进行调整的参数,例如 minSize 和 maxSize,这些是可选参数,但是,如果您有控制权,您可以调整这些以获得可靠的预测超过输入图像大小。如果您将minSize 设置为更小的值并忽略maxSize,那么它也适用于更小和更高分辨率的图像,但性能会受到影响。此外,如果您现在想象,为什么高分辨率和低分辨率图像之间没有区别,那么您应该考虑 cascade.detectMultiScale 在内部将图像缩放到较低分辨率以提高性能,这就是为什么定义 maxSize 和minSize 对于避免任何不必要的迭代很重要。
我必须以一定的比例捕捉视频帧吗?例如
(100px X100px)
这主要取决于您传递给cascade.detectMultiScale 的参数。我个人认为100 x 100 对于帧中较小的人脸检测来说太小了,因为在将帧调整为更小的尺寸时某些特征会完全丢失,而cascade.detectMultiScale 高度依赖于输入图像中的梯度或特征.
但是如果输入帧只有人脸作为主要部分,并且没有其他较小的人脸悬在后面,那么你可以使用100 X 100。我已经测试了一些大小为100 x 100 的样本面,效果很好。如果不是这种情况,那么300 - 400 px 宽度应该可以正常工作。但是,您需要调整参数以达到准确性。
Haar-Cascades 在灰度图像中效果更好吗?
它们仅适用于灰度图像。
article,如果你看了第一部分,就会知道人脸检测是由检测图像中的许多二进制模式组成的,这基本上来自ViolaJones,论文是基础这个算法。
不同的光照条件会有所不同吗?
在某些情况下,大部分 Haar 特征可能是光照不变的。
如果您考虑在不同的照明条件下拍摄绿光或红光下的图像,那么它可能不会影响检测,haar 特征(因为依赖于灰度)独立于输入图像的 RGB 颜色。检测主要取决于输入图像中的梯度/特征。因此,只要输入图像中有足够的梯度差异,例如眉毛的强度低于前额等,它就可以正常工作。
但是考虑输入图像有背光或环境光非常低的情况,在这种情况下,可能没有找到一些突出的特征,这可能导致无法检测到人脸。
detectMultiScale(params) 方法究竟做了什么?
我猜,如果你已经阅读了article,那么此时你一定很了解它。
如果我想进一步分析 Eye Blinking, Eye Closure
持续时间、嘴巴打哈欠、头部点头和头部方向检测
疲劳(嗜睡)使用支持向量机,有什么建议吗?
不,我不建议您使用 SVM 执行这些类型的手势检测,因为运行 10 个不同的级联来得出当前的面部状态会非常慢,但是我建议您使用一些面部标志检测框架,比如Dlib,你也可以搜索一些其他的框架,因为dlib的模型大小接近100MB,如果你想移植到移动设备上可能不适合你的需求。所以关键是**面部地标检测**,一旦你得到了全脸的标签,你可以得出结论,比如嘴巴是否张开或眼睛是否在眨眼,并且它是实时工作的,所以你的视频处理不会不会受太多苦。