【问题标题】:How do i speed up face detection in OpenCV in Java如何在 Java 中加速 OpenCV 中的人脸检测
【发布时间】:2014-06-09 11:27:41
【问题描述】:

我正在尝试制作一个实时人脸检测程序,用于在带有网络摄像头的房间中跟踪人脸。但是,当我这样做时,它给我的速度不超过每秒 4 帧(每 267 毫秒)。我知道使用 OpenCV 的其他人使用 TBB/OpenMP 可以获得

我希望每秒至少获得 10 帧。以下是我已经采取的加快流程的措施:

  • 我在图像的灰度上检测人脸。
  • 我使用的比例因子为 1.1
  • 我设置了最小值和最大值。

简而言之,我的问题是: 与其他代码相比,我的代码为什么这么慢?我的代码不使用 OpenMP 或 TBB 吗?我如何让我的代码使用它?在 java 中甚至可以使用 OpenMP 或 TBB 吗?

我在安装了 windows 的 2012 年末 MacBook(Core i7,4Gb RAM)上运行该程序。

这是我当前的代码:

public class FaceDetector {
    CascadeClassifier faceDetector;

    public FaceDetector(){
        faceDetector = new CascadeClassifier(new File("haarcascade_frontalface_alt.xml").getPath());
    }

    /** Image will be overwritten by an image with detected faces on it **/
    public Rect[] getFaces(Mat image){

        MatOfRect faceDetections = new MatOfRect();

        Mat mGray = image;
        Imgproc.cvtColor(image, mGray, Imgproc.COLOR_RGBA2GRAY); // Convert to grayscale
        faceDetector.detectMultiScale(image, faceDetections, 1.1, 2, 2,new Size(40, 40), new Size(400, 400));

        for (Rect rect : faceDetections.toArray()) {
            Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
                    new Scalar(0, 255, 0));
        }

        return faceDetections.toArray();
    }   
}

提前致谢!

Milan van Dijck(埃文斯应用科技大学学生)

【问题讨论】:

  • 切换到 C++ ? ;-) 除了玩笑之外,Java 中任何“严重”的密集处理工作都不会像 C++ 那样快。
  • 您可以尝试仅在子图像上计算人脸检测:首先找到可能存在人脸的区域(例如,使用背景减法),然后仅在这些区域上计算人脸检测。

标签: java performance opencv face-detection


【解决方案1】:

我不认为您的代码没有使用 OpenMP 或 TBB。要使用 OpenMP,您通常会在循环之前添加类似“#pragma omp...”的内容。

类似:

//#pragma omp parallel for private(j)
for(j = 0; j < _eyesVec.size(); j++ )
{
    cv::rectangle(faceROIColor, Rect(_eyesVec[j].x,_eyesVec[j].y,_eyesVec[j].width,_eyesVec[j].height), 

    cv::Scalar(0,255,0),2,8,0);
}

您还必须确保使用启用了 OpenMP 的 opencv 二进制文件(使用 WITH_OPENMP 选项编译)

【讨论】:

    猜你喜欢
    • 2018-09-05
    • 2013-12-28
    • 2012-03-29
    • 2011-04-15
    • 2016-02-06
    • 2020-10-16
    • 2012-03-08
    • 2012-02-04
    • 2013-05-24
    相关资源
    最近更新 更多