美文网首页
iOS 解决人脸识别卡顿

iOS 解决人脸识别卡顿

作者: Raining7 | 来源:发表于2017-11-21 15:10 被阅读356次

前段时间,公司项目需要运用人脸识别,我用的AVFoundation、CoreImage的CIFaceFeature来实现,然后一顿操作完成过后,发现人脸识别时在6s上CPU使用率达到了70%,在6以下的真机上运行CPU直接到150%+。。。卡到爆炸💥
然后代码定位在人脸识别的代理上

#pragma mark - <AVCaptureVideoDataOutputSampleBufferDelegate>
- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection {
    CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
    CVPixelBufferLockBaseAddress(imageBuffer,0);
    uint8_t *baseAddress = (uint8_t *)CVPixelBufferGetBaseAddress(imageBuffer);
    size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
    size_t width = CVPixelBufferGetWidth(imageBuffer);
    size_t height = CVPixelBufferGetHeight(imageBuffer);
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef newContext = CGBitmapContextCreate(baseAddress,
                                                    width, height, 8, bytesPerRow, colorSpace,
                                                    kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
    CGImageRef newImage = CGBitmapContextCreateImage(newContext);
    CGContextRelease(newContext);
    CGColorSpaceRelease(colorSpace);
    UIImage *image= [UIImage imageWithCGImage:newImage scale:1 orientation:UIImageOrientationLeftMirrored];
    CGImageRelease(newImage);
    [self performSelectorOnMainThread:@selector(detectForFacesInUIImage:)
                           withObject: (id) image waitUntilDone:NO];
    CVPixelBufferUnlockBaseAddress(imageBuffer,0);
}

一般视频录制是30帧,机子每秒都需要处理那么多张图片根本吃不消,特别是CPU比较老的机型。
我的解决方法是:
1.限制摄像头的帧数

[videoDevice setActiveVideoMaxFrameDuration:CMTimeMake(1, 25)];

限制最大帧数 每秒25帧
2.每5帧取一张图片来进行处理

fpsCount_ ++;
    if (fpsCount_%5 != 1) {
        return;
    }

先定义一个全局变量fpsCount_,然后在didOutputSampleBuffer:方法开头进行控制。
最后,终于在老机型上成功流畅运行,�运行时CPU使用率只有百分之二三十。

相关文章

  • iOS 解决人脸识别卡顿

    前段时间,公司项目需要运用人脸识别,我用的AVFoundation、CoreImage的CIFaceFeature...

  • 人脸识别 -- 活体检测(张嘴摇头识别)

    一:简介 最近项目在做了身份证银行卡识别之后,开始实现人脸识别和活体识别,其中人脸识别包括人脸入库、人脸查找、人脸...

  • 2020-05-14

    云卡通人脸识别消费系统解决方案 云卡通人脸识别系统含盖:动态人脸识别门禁管理系统、动态人脸识别消费系统、动态人脸识...

  • 2020-07-02

    产品名称:动态人脸识别消费机 产品类型:台式 收费方式:IC卡、二维码、人脸识别(可选IC卡+人脸识别) 1:1人...

  • 2020-06-11

    食堂人脸识别消费系统解决方案 一、人脸识别系统具有广泛的应用:包括人脸识别出入管理系统、人脸识别门禁考勤系统、人面...

  • iOS App 使用 GCD 导致的卡顿问题

    最近在调研 iOS app 中存在的各种卡顿现象以及解决方法。 iOS App 出现卡顿(stall)的概率可能超...

  • OpenCV

    ios学习之基于 OpenCV的人脸识别

  • 人脸识别行业解决方案,人脸识别系统应用开发解决方案

    人脸识别行业解决方案,人脸识别系统应用开发解决方案 [本文由汇新云李先生编辑/人脸识别系统应用开发搜索微信:hui...

  • iOS通过runloop监控卡顿

    质量监控-卡顿检测iOS实时卡顿监控基于Runloop简单监测iOS卡顿的demo微信iOS卡顿监控系统iOS-R...

  • 二、AVFoundation使用:人脸识别、二维码识别

    人脸识别 目前人脸识别有多种解决方案,现在来说的是AV Foundation解决方案1、CoreImage :C...

网友评论

      本文标题:iOS 解决人脸识别卡顿

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