java - 在 Java 中使用 openCV 检测面部微笑

标签 java opencv detection

我正在开发一个 openCV 应用程序。通过一些代码,我能够检测正面。我想检测并记录用户微笑的次数。我的想法是在检测到面部后,我在其周围画一个矩形,此时我将称之为微笑检测。到目前为止,我的结果还不够成功。我正在发布我的人脸检测代码,任何人都可以给我任何指示如何从人脸检测中的 for 循环开始。谢谢。

 public Mat detect(Mat inputframe) {
        Mat mRgba = new Mat();
    Mat mGrey = new Mat();
    MatOfRect faces = new MatOfRect();
    inputframe.copyTo(mRgba);
    inputframe.copyTo(mGrey);
    Imgproc.cvtColor(mRgba, mGrey, Imgproc.COLOR_BGR2GRAY);
    Imgproc.equalizeHist(mGrey, mGrey);
    face_cascade.detectMultiScale(mGrey, faces);
    System.out.println(String.format("Detected %s face",
            faces.toArray().length));
    MatOfRect smileDetections = new MatOfRect();
    face_cascade1.detectMultiScale(mGrey,smileDetections);
    System.out.println(String.format("Detected %s smiles",smileDetections.toArray().length));
    for (Rect rect : faces.toArray()) {
        Point center = new Point(rect.x + rect.width * 0.5, rect.y
                + rect.height * 0.5);
        Core.ellipse(mRgba, center, new Size(rect.width * 0.5,
                rect.height * 0.5), 0, 0, 360, new Scalar(255, 0, 255), 4,
                8, 0);
    }
    return mRgba;
}
    }

最佳答案

无论如何,你的选择很少:

  1. 使用主动形状模型 (ASM) 和主动外观模型 (AAM),您可以轻松找到一些免费的开源库。
  2. 使用一些统计分类器:我认为您可能需要检查这个有用的 paper ,他们使用树增强朴素贝叶斯 (TAN) 分类器来识别面部表情。
  3. 或者你可以使用opencv人脸识别api,但不识别人脸,你可以定义你的笑脸,甚至只定义不同大小写的嘴,opencv识别器会根据你定义的类标签对它们进行分类。 Here您会发现 opencv 的教程告诉您如何修复数据并训练它们。

关于java - 在 Java 中使用 openCV 检测面部微笑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26016116/

相关文章:

c# - OpenCV C# - 检测静态图像中的简单对象

azure - 我正在尝试在 azure 的 zho_chs 语言文本审核服务中添加自定义术语。但返回 zho_chs 是无效代码

java - 使用未初始化的最终字段 - 带/不带 'this.' 限定符

java - 使用 getter 或直接使用名称获取其自己的类中的私有(private)变量?

java - 无法在我的 firebase 服务中解析方法 'findViewById(int)'

opencv - 降采样但不完全划分的影响

opencv - 如何使用 SURF 和 C 检测视频中的对象?

java - 从java中的主类访问静态内部类中的静态方法后,eclipse发出警告

python - 如何使用 opencv (python/c++) 从图像中去除模糊

c++ - SVM + HOG,发现对象总是NULL