美文网首页人脸识别程序员iOS Developer
iOS openCV的研究(3)——人脸识别

iOS openCV的研究(3)——人脸识别

作者: Realank | 来源:发表于2016-05-04 14:10 被阅读2625次

    人脸识别是利用openCV库和所谓的级联器haarcascade_frontalface_alt2.xml来进行识别

    识别方法如下:

    + (UIImage*)faceDetectForImage:(UIImage*)image {
    //    cv::CascadeClassifier faceDetector;
    //    // 添加xml文件
    //    NSString* cascadePath = [[NSBundle mainBundle]
    //                             pathForResource:@"haarcascade_frontalface_alt"
    //                             ofType:@"xml"];
    //    faceDetector.load([cascadePath UTF8String]);
        static cv::CascadeClassifier faceDetector;
        
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            // 添加xml文件
            NSString* cascadePath = [[NSBundle mainBundle]
                                     pathForResource:@"haarcascade_frontalface_alt"
                                     ofType:@"xml"];
            faceDetector.load([cascadePath UTF8String]);
        });
        
        
        cv::Mat faceImage;
        UIImageToMat(image, faceImage);
        
        // 转为灰度
        cv::Mat gray;
        cvtColor(faceImage, gray, CV_BGR2GRAY);
        
        NSLog(@"%d",faceImage.channels());
        
        // 检测人脸并储存
        std::vector<cv::Rect>faces;
        faceDetector.detectMultiScale(gray, faces,1.1,2,0,cv::Size(30,30));
        
        // 在每个人脸上画一个红色四方形
        for(unsigned int i= 0;i < faces.size();i++)
        {
            const cv::Rect& face = faces[i];
            cv::Point tl(face.x,face.y);
            cv::Point br = tl + cv::Point(face.width,face.height);
            // 四方形的画法
            cv::Scalar magenta = cv::Scalar(255, 0, 0, 255);
            cv::rectangle(faceImage, tl, br, magenta, 11, 8, 0);
        }
        
        return MatToUIImage(faceImage);
    }
    

    详细内容,请read the fucking source code:
    https://github.com/Realank/openCV-Practice

    封装好的方法在OpenCVUtil类中


    相关文章

      网友评论

      • AliceJordan:博主为什么导入opencv3.3报错了 请问怎么配置的
      • Steven054:你的demo里面没有opencv2的framework
        Realank:@Steven054 http://www.jianshu.com/p/9a1e8257b39a
      • 6ea54dc08ca1:有没有那个人脸先录入 然后在进行验证的那种 类似 使用人脸进行注册登陆的例子呢 谢谢
        代码守望者:有很好的例子来完成注册登录吗?
        6ea54dc08ca1:@Realank 好吧,明白
        Realank:@天佑love清清 其实我做的这个叫人脸检测,你说那个叫人脸识别,也就是不光能知道这是人脸,还能识别出这是谁的人脸,你说的更复杂一些, 我还不会
      • jobs_chen:博主,我run了一下,这是人脸检测啊,跟人脸识别还是有区别的。
      • jobs_chen:down 下来,米哟opencv2.framework?望请楼主补发、
      • 5fff1c1a968e:我下载了opencv 3.1.0之后, 里面我看几乎所有语言都有, ios需要添加哪一个进去, 全部拉进去之后,编译还有一个错误是 opencl 编译错误,请教一下该怎么解决
        学_iOS:@酱酱君 同3.1.0 请问你现在解决好了吗 我刚开始入手这一块
      • Ashen:博主,能否写一个检测身份证背面的国徽的例子
        Realank:@Ashen 人脸是现成的识别算法啊,国徽需要训练,还不懂啊……
        Ashen:@Realank 不会吧,人脸你都可以了,看你写的挺厉害的,就写个试试呗
        Realank:@Ashen 太高深不会啊:cold_sweat:

      本文标题:iOS openCV的研究(3)——人脸识别

      本文链接:https://www.haomeiwen.com/subject/kybrrttx.html