如何使用opencv从相机的所有位置检测带有android的人脸?

Posted

技术标签:

【中文标题】如何使用opencv从相机的所有位置检测带有android的人脸?【英文标题】:how can i detect faces with android using opencv, from all positions of the camera? 【发布时间】:2017-10-19 18:27:32 【问题描述】:

我做了一个应用程序来检测人脸并在人脸周围画一个矩形。问题是它只检测一个位置的人脸,也就是说,我可以检测单元格在一个位置的人脸,但是当我转动它时它就停止检测了。

我想知道是否有一种算法可以让我检测任何位置的人脸,无论是躺着、朝上等......

我正在使用 frontalFace.xml 的 xml。

    vector< Rect > detectedFaces;
    detectedFaces.clear();
    frontalFaceClassifier.detectMultiScale( dst, detectedFaces,
                                   1.5, 3, 2 | CV_HAAR_SCALE_IMAGE , Size(90,90) );

    qDebug()<<"Cantidad de caras en el vector : " << detectedFaces.size();
    if( detectedFaces.size() > 0 )
        actualFace = detectedFaces.at( 0 );

        countDetectedFaces++;
        qDebug()<<"**********qwerty**********"<<detectedFaces.size()<<"----------";
    
    for(int i=0;i<detectedFaces.size();i++)
    

         // Dibujar un cuadrado en la zona en donde se detecta la cara.
         Rect dibujarCuadrado = detectedFaces.at(i);
         cv::rectangle (mat, dibujarCuadrado, 20, 1, LINE_8, 0);
    

【问题讨论】:

【参考方案1】:

您似乎并不清楚自己在做什么。这不是关于算法,而是关于分类。

您需要使用所需的信息集来训练分类器。 OpenCV 在 XML 文件中为您提供了预训练的集合,例如“正面”和“侧面”,因此首先开始运行正面和侧面的 svm,然后进行一些过滤以消除结果中的重叠。

如果你想为你的识别器添加其他功能,你需要自己训练它。

【讨论】:

以上是关于如何使用opencv从相机的所有位置检测带有android的人脸?的主要内容,如果未能解决你的问题,请参考以下文章

在android上使用带有opencv的usb相机

如何使用 GMock 模拟 OpenCV 相机,或者如何使用带有 GTest 的相机测试方法?

带有 OpenCV 和 OpenGL 的 AR

在opencv c ++(移动相机)上检测运动

如何使用opencv查找从相机拍摄的图像中可用的面部数量?

想法如何使用opencv for IOS测量检测到的物体与相机的距离?