iOS调用opencv 开启摄像头


#import <opencv2/highgui/cap_ios.h> 

#import "ViewController.h"

#import <opencv2/opencv.hpp>

#import <opencv2/imgproc/types_c.h>

#import <opencv2/highgui/ios.h>

#import <opencv2/highgui/cap_ios.h>


@interface ViewController ()<CvVideoCameraDelegate>

{

    cv::Mat cvImage;

    cv::CascadeClassifier faceDetector;

}

@property (strongnonatomic)  UIImageView *imageView;

@property (nonatomic,strongCvVideoCamera*videoCamera;


@end


@implementation ViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    self.imageView = [[UIImageViewalloc]initWithFrame:self.view.frame];

    self.videoCamera = [[CvVideoCamera alloc]initWithParentView:self.imageView];

    self.videoCamera.delegate = self;

    self.videoCamera.defaultAVCaptureDevicePosition =AVCaptureDevicePositionBack;

    self.videoCamera.defaultAVCaptureSessionPreset =AVCaptureSessionPreset640x480;

    self.videoCamera.defaultFPS = 30;

    

    [self.view addSubview:self.imageView];

    UIButton *btn = [[UIButtonalloc]initWithFrame:CGRectMake(1050100100)];

    [btn addTarget:self action:@selector(start)forControlEvents:UIControlEventTouchUpInside];

    [btn setBackgroundColor:[UIColor redColor]];

    [self.view addSubview:btn];

}


- (void)start{

    [self.videoCamera start];

}


- (void)processImage:(cv::Mat &)image

{

    cv::Mat gray;

    // 将图像转换为灰度显示

    cv::cvtColor(image, gray, CV_RGBA2GRAY);

    // 应用高斯滤波器去除小的边缘

    cv::GaussianBlur(gray, gray, cv::Size(5,5),1.2,1.2);

    //计算与画布边缘

    cv::Mat edges;

    cv::Canny(gray, edges, 050);

    //使用白色填充

    image.setTo(cv::Scalar::all(255));

    // 修改边缘颜色

    image.setTo(cv::Scalar(0,128,255,255),edges);

    // Mat转换为XcodeUIImageView显示

    self.imageView.image = MatToUIImage(image); 

}

直接上代码,用到了类CvVideoCamera,这个类可以调用设备摄像头,在viewDidLoad中创建这个类,并将其view指向imageView.这样镜头返回的每一帧都会转成image对象,设置代理为控制器本身,设置镜头为后置摄像头,创建了一个按钮,点击按钮开启摄像头,可以实现每一帧的检测,这样我们就完成了用opencv对于设备摄像头的使用,代理中的每一句代码都有注释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值