1.人脸检测
在前面实现的基础上,这里实现人脸检测就相对方便得多了,实现方式简单的采用opencv的分类级联处理haarcascade_frontalface_default.xml。在检测之后,返回人脸检测框,送到上一章节实现的自定义viewfinder中绘制。
首先先加载级联器
QSmartMethod::QSmartMethod(QObject *parent)
: QObject(parent)
{
cascade.load( "/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml");
}
然后在槽中得到frame用于做检测
void QSmartMethod::needHandleImage(QVideoFrame f)
{
//qDebug() <<" sub" <<QThread::currentThreadId();
//qDebug() << f.pixelFormat() << f.width() << f.height();
QVector<QRect> rects;
if(cascade.empty())
{
emit handleComplete(rects);
return;
}
quint64 start = QDateTime::currentDateTimeUtc().toMSecsSinceEpoch();
quint64 end = QDateTime::currentDateTimeUtc().toMSecsSinceEpoch();
qDebug() << "load "<<end - start;
vector<Rect> faces, faces2