2012年5月28日月曜日

iOSでカメラプレビューを試してみました

顔認識のアプリを作りたいんですがまだまだそこまで知識がないので
とりあえずiOS Dev CenterのSqureCamを見ながらカメラのプレビュー画面を表示するものを作ってみました。

いつも通りXcode > Create a Xcode Project > Single View Application
ProductName : CameraTest

まず、以下のようなかんじで画面を作成します。

次に、割り当てたViewとBar Button Itemをそれぞれ関連付けを行います。

とりあえずここまででビルドしてエラーがでないことを確認します。

次に、AVFoundation.frameworkをプロジェクトに追加します。

次に、割り当てたView(previewView)の部分にカメラプレビューを表示します。
ViewController.h
@interface ViewController : UIViewController
{
    AVCaptureVideoPreviewLayer *previewLayer;
}

ViewController.m
- (void)ViewDidLoad
{
    [super viewDidLoad];

    [self setupAVCapture];
}

- (void)setupAVCapture
{
    // セッション生成
    AVCaptureSession *session = [AVCaptureSession new];
    [session setSessionPreset:AVCaptureSessionPreset640x480];
    
    // 入力設定
    AVCaptureDevice *device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];
    AVCaptureDeviceInput *deviceInput = [AVCaptureDeviceInput deviceInputWithDevice:device error:nil];
    
    if ([session canAddInput:deviceInput])
        [session addInput:deviceInput];
    
    // 画面表示設定
    previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:session];
    [previewLayer setBackgroundColor:[[UIColor blackColor] CGColor]];
    [previewLayer setVideoGravity:AVLayerVideoGravityResizeAspect];
    
    CALayer *rootLayer = [previewView layer];
    [rootLayer setMasksToBounds:YES];
    [previewLayer setFrame:[rootLayer bounds]];
    [rootLayer addSublayer:previewLayer];
    [session startRunning];
}

一応、これだけでアプリ内のView (previewView)の部分にカメラのプレビューが表示されると思います。

これだけだと何も使えないんでフォーカスを合わせて画面をキャプチャするか機能を追加してみます。
(一応作ってはいるんですが、そのうち載せます)



0 件のコメント:

コメントを投稿