我是靠谱客的博主 高挑鱼,最近开发中收集的这篇文章主要介绍OpenCV学习8-检测图片中是否有人脸,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

使用OpenCV的库函数可以很容易的检测出一张图片中是否有人脸,仅仅几行代码就可以实现。

检测原理:

1. 通过CascadeClassifier::load()调用已经训练好的haar+adaboost人脸检测模型,参数就是模型的文件路径。

PS:作为初学者自然是调用OpenCV自带的已经训练好的人脸检测模型。opencv提供了4种haar的人脸检测模型。

这里调用的是haarcascade_frontalface_alt.xml。从这里看出一个训练好的人脸检测模型是一个xml文件。

2.通过调用CascadeClassifier::detectMultiScale检测人脸的位置。


待解决的问题,以后解决这些问题后,在问题后面贴出博客地址。

但是作为初学者目前仍有下面几个问题待解决:

1.这个模型是怎么训练出来的

2.从图二可以看到检测出来的效果不是很好的,这个是模型的问题?还是程序的问题?该怎么改进?


代码如下:

    Mat image = imread("..\..\image\Lena.png", IMREAD_GRAYSCALE);

    CascadeClassifier cascade;

    double time = (double)getTickCount();

    if (!cascade.load("../data/haarcascades/haarcascade_frontalface_alt.xml"))
    {
        printf("Cascade.load errorrn");
    }
    vector<Rect> faces(0);
    cascade.detectMultiScale(image, faces, 1.1, 2, 0, Size(30, 30));

    if (faces.size() > 0)
    {
        for (size_t i = 0; i < faces.size(); i++)
        {
            rectangle(image, faces[i], Scalar(150, 0, 0), 3, 8, 0);
        }
    }
    else
    {
        printf("No Facern");
    }
    time = (double)getTickCount() - time;

    printf("time used %f", time * 1000 / getTickFrequency());

    imshow("image", image);

效果如下

最后

以上就是高挑鱼为你收集整理的OpenCV学习8-检测图片中是否有人脸的全部内容,希望文章能够帮你解决OpenCV学习8-检测图片中是否有人脸所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(68)

评论列表共有 0 条评论

立即
投稿
返回
顶部