iOS开发-利用GPUImageMotionDetector做一个简易的运动检测

之前项目需要根据摄像头进行运动检测,写了一个小小的demo分享给大家

首先构建一个简易的video(偷懒直接使用的GPUImage)

- (void)creatGPUImageVideoCamera{
    //摄像头初始化
    _videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset1280x720 cameraPosition:AVCaptureDevicePositionBack];
    //开启捕获声音
    [_videoCamera addAudioInputsAndOutputs];
    //设置输出图像方向,可用于横屏推流。
    _videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
    //镜像策略,这里这样设置是最自然的。跟系统相机默认一样。
    _videoCamera.horizontallyMirrorRearFacingCamera = NO;
    _videoCamera.horizontallyMirrorFrontFacingCamera = YES;
    //设置预览view
    _gpuImageView = [[GPUImageView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight)];
    [self.view addSubview:_gpuImageView];
    //初始化美颜滤镜
    _beautifyFilter = [[GPUImageOpacityFilter alloc] init];
    //相机获取视频数据输出至美颜滤镜
    [_videoCamera addTarget:_beautifyFilter];
    //美颜后输出至预览
    [_beautifyFilter addTarget:_gpuImageView];
    
    _dataHandler = [[GPUImageRawDataOutput alloc]initWithImageSize:CGSizeMake(kScreenWidth, kScreenHeight) resultsInBGRAFormat:YES];
    [_beautifyFilter addTarget:_dataHandler];
    
//    _videoCamera.delegate = _dataHandler;
    
    //开始捕获视频
    [self.videoCamera startCameraCapture];
    
    //修改帧率
//    [self updateFps:AVCaptureSessionPreset640x480.fps];
    
}

复制代码

这时候已经可以看到画面了


这时候就需要用到GPUImageMotionDetector来做运动检测

    // 运动检测的类
    _motionDetector = [[GPUImageMotionDetector alloc]init];
    [_beautifyFilter addTarget:_motionDetector];
    
    _motionDetector.motionDetectionBlock = ^(CGPoint motionCentroid, CGFloat motionIntensity, CMTime frameTime) {
        
        if (motionCentroid.x > kMotionDetectionSensitiveValue ||  motionCentroid.y > kMotionDetectionSensitiveValue){
            NSLog(@"有人经过了");
        }
        
    };
  // kMotionDetectionSensitiveValue设置一个敏感度

复制代码

这时候控制台疯狂的输出"有人经过"


demo地址

转载于:https://juejin.im/post/5aed04a951882506a36c631d

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值