美文网首页
OpenVC本地图片人脸识别

OpenVC本地图片人脸识别

作者: 谭老师初中历史 | 来源:发表于2019-05-20 17:35 被阅读0次

人脸识别有多种方式:
CoreImage、OpenCV、Vision、AVFoundation。
可参考大佬的简书:
https://www.jianshu.com/p/1eb1930562ca

1.jpg
//UIImageToMat
    cv::Mat cvimage;
    UIImageToMat(image, cvimage);
    
    if (!cvimage.empty()) {
        //转换为灰度图(降低复杂度,优化计算)
        cv::Mat gray;
        cvtColor(cvimage,gray,CV_BGR2GRAY);
        
        //直方图均匀化(改善图像的对比度和亮度)
        cv::Mat equalizedImg;
        equalizeHist(gray, equalizedImg);

        //存放人脸rect的vector
        std::vector<cv::Rect> faces;
        
        //加载opencv官方 人脸检测器
        NSString *cascadePath = [[NSBundle mainBundle] pathForResource:@"haarcascade_frontalface_alt2" ofType:@"xml"];
        faceDetector.load([cascadePath UTF8String]);
        
        //人脸识别
        faceDetector.detectMultiScale(gray, faces, 1.1, 3, 0, cv::Size(30,30));
        
        if (faces.size() > 0) {
            cout << "face:" << faces.size() << endl;
        }

        //遍历face ,在cvimage上画框
        for (vector<cv::Rect>::const_iterator rect = faces.begin(); rect != faces.end(); rect++) {
            rectangle(cvimage, cvPoint(rect->x, rect->y), cvPoint(rect->x + rect->width - 1, rect->y + rect->height - 1), cvScalar(255, 0, 255), 1, 1, 0);
        }
        
        UIImage *imageEND = MatToUIImage(cvimage);
        imageView.image = imageEND;
    }

如果需要交互,就需要自己去在imageView上加控件了:

  
        for (int i = 0; i < faces.size(); i++) {
            cv::Rect rect = faces[i];
            
            int x = rect.x;
            int y = rect.y;
            int width = rect.width;
            int height = rect.height;
            
            UIView *faceView = [[UIView alloc] initWithFrame:CGRectMake(x, y, width, height)];
            faceView.backgroundColor = [UIColor clearColor];
            faceView.layer.borderColor = [UIColor orangeColor].CGColor;
            faceView.layer.borderWidth = 1;
            
            [imageView addSubview:faceView];
            
            NSLog(@"face_%d: {%d, %d, %d, %d}",i,x,y,width,height);
        }
         

效果图:


WechatIMG26.jpeg

相关文章

  • OpenVC本地图片人脸识别

    人脸识别有多种方式:CoreImage、OpenCV、Vision、AVFoundation。可参考大佬的简书:h...

  • iOS openvc2 将图片转换为Mat类型

    最近在做人脸识别功能, 由于涉及到 ncnn 库的使用, 所以需要使用 Mat 图片类型项目需要导入 openvc...

  • wrs-arcface虹软人脸识别

    前言 虹软人脸识别组件,支持活体识别、离线识别、图片人脸特征识别、图片是否同一人对比、相机人脸识别或对比 功能 支...

  • UIImage的imageOrientation属性

    在做人脸识别时,发现相机拍摄的图片直接拿去识别,不成功;然而把图片保存到本地相册,再选取出来,便可成功识别,百思不...

  • 用 flask 搭建最简单的本地图片服务器

    做人脸识别,截取下来的人脸图片会在本地保存起来。业务系统,希望通过一个 http 服务访问这些图片。我用flask...

  • 使用CoreImage人脸识别初试

    一 静态图片的人脸识别静态图片的人脸识别比较简单,直接看代码注释即可 二 相机实时的人脸识别,分步骤如下:(...

  • 人脸识别技术

    人脸识别技术 (一) —— 基于CoreImage实现对静止图片中人脸的识别人脸识别技术 (二) —— 基于Cor...

  • 了解人脸识别和二维码识别

    人脸识别方案 CoreImage (二维码识别,人脸识别) face++ 2014阿里 收费(两种方案本地计算 ...

  • 人脸识别

    图片人脸检测——OpenCV版(二) 图片人脸检测——Dlib版(四) 人脸识别之人脸对齐(一)--定义及作用

  • iOS 人脸识别Demo

    最近尝试了下苹果中关于人脸识别的API 尝试着写了几个demo: 静态图片人脸识别 动态识别人脸OC版 动态识别人...

网友评论

      本文标题:OpenVC本地图片人脸识别

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