ios+opencv调用摄像头

ios opencv


目标实现opencv调用ios手机摄像头

效果:

没有物体识别和按钮部分,如果想学进阶的,点《ios目标检测实战》博文

在这里插入图片描述

简单准备工作

下载需要的opencv ios framework。https://github.com/opencv/opencv/releases

新建一个objective-C项目。

把framework拖入项目:

一定要点Copy items if needed这一项
而Create groups和Create folder references都可以
在这里插入图片描述

因为opencv是用c++写的,我们把我们需要写Opencv代码的控制器的Type改为C++类型。

在这里插入图片描述

添加实时视频处理需要的库:

在这里插入图片描述

添加这些库:

在这里插入图片描述

由于我们要调用摄像头,所以我们需要申请摄像头权限:

找到Info.plist文件,右键OpenAs-SourceCode:

添加:

    <key>NSCameraUsageDescription</key>
    <string>请求访问相机</string>

搭建界面

随便搞一个ImageView来显示摄像头图片:

在这里插入图片描述

键入代码

写代码要注意:

  • #import <opencv2/opencv.hpp>要放在#import "ViewController.h"之前!

  • 全部OpenCV代码都写在一个文件中,网上有些代码将某些声明其写在.h文件,但.h无法引用.hpp导致出错。

主要.m代码大致如下:


#import <opencv2/opencv.hpp>
#import <opencv2/videoio/cap_ios.h>
#import "ViewController.h"

using namespace cv;
using namespace std;

@interface ViewController ()<CvVideoCameraDelegate>
{
    Mat cvImage;
}
@property (weak, nonatomic) IBOutlet UIImageView *imageView;
@property(nonatomic,strong)CvVideoCamera * videoCamera;
@end


@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    self.videoCamera = [[CvVideoCamera alloc]initWithParentView:self.imageView];
    self.videoCamera.defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack;
    
    self.videoCamera.defaultAVCaptureSessionPreset =AVCaptureSessionPreset640x480;
    
    self.videoCamera.defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait;
    self.videoCamera.defaultFPS = 30;
    self.videoCamera.grayscaleMode = false;
    
    self.videoCamera.delegate = self;
    
    [self.videoCamera start];
}


//处理主程序
- (void)processImage:(Mat&)image{
//    cvtColor(image, image, cv::COLOR_RGBA2RGB);
}



- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

@end

Opencv调用相机

我们最后还需要把代码中的ImageView与我们storyboard中的ImageView连接

在这里插入图片描述

最后我们就可以调试了。

我们的主要代码在:

//处理主程序
- (void)processImage:(Mat&)image{
//    cvtColor(image, image, cv::COLOR_RGBA2RGB);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值