출처 : http://thefermata.net/?p=997
아이폰에서 OpenCV를 사용하려면 우선 iOS용 OpenCV Framework가 필요합니다. OpenCV 공식홈페이지 또는 SourceForge에서 다운로드 가능합니다.
압축을 풀어서 framework 폴더 통째로 프로젝트에 추가.
링크 되게 Add to targets 항목 확인 후 추가합니다.
이제 같이 사용할 라이브러리들을 추가해 주어야 합니다.
QuartzCore, Accelerate, AssetsLibrary, AVFoundation, CoreMedia, CoreImage, CoreVideo
빌드 설정을 해야하는데, OpenCV를 사용하려면 Objective C++를 사용해야합니다.
간단하게 OpenCV의 Canny를 활용해서 실시간으로 카메라 입력의 외곽선을 따오는 것을 해봤습니다.
먼저 ViewController.h입니다. 이미지를 출력할 UIImageView 하나와 CvVideoCamera 하나를 사용할 겁니다.
그리고 camera의 delegate사용을 위해 CvVideoCameraDelegate를 선언합니다.
http://thefermata.net/?p=994 에서처럼 core, imageproc, highgui를 사용합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | #import <UIKit/UIKit.h> #import <opencv2/opencv.hpp> #import <opencv2/imgproc/imgproc_c.h> #import <opencv2/highgui/cap_ios.h> #import <opencv2/core/core_c.h> using namespace cv; @interface ViewController : UIViewController<CvVideoCameraDelegate>{ IBOutlet UIImageView *cameraView; CvVideoCamera *camera; } @property ( nonatomic , retain ) CvVideoCamera *camera; @end |
다음은 ViewController.m입니다. viewDidLoad에서 CvVideoCamera를 생성하고 설정값을 준 뒤 바로 캡처를 시작합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | ...(생략)... @synthesize camera; - ( void )viewDidLoad { [ super viewDidLoad ]; camera = [[ CvVideoCamera alloc ] initWithParentView :cameraView]; camera .delegate = self ; camera .defaultAVCaptureDevicePosition = AVCaptureDevicePositionBack ; //장치 설정 camera .defaultAVCaptureSessionPreset = AVCaptureSessionPreset640x480 ; //사이즈 설정 camera .defaultAVCaptureVideoOrientation = AVCaptureVideoOrientationPortrait ; //방향 설정 camera .defaultFPS = 3 0 ; // 프레임률 [camera start ]; } - ( void )processImage:(Mat&)image; { //여기서 opencv 작업을 함 Mat image_copy; Mat image_copy 2 ; cvtColor(image, image_copy, CV_BGRA 2 GRAY); //흑백 1채널로 변환 cvtColor(image, image_copy 2 , CV_BGRA 2 GRAY); Canny(image_copy 2 ,image_copy, 2 0 0 , 2 0 0 ); //외곽선 따기 bitwise_not(image_copy, image_copy); cvtColor(image_copy, image, CV_GRAY 2 BGRA); } ...(생략)... |
그리고 storyboard로 가서 ViewController에 UIImageView를 하나 그려준 뒤 cameraView outlet을 연결해주세요.
이제 실행해봅니다. (시뮬레이터에는 카메라가 없기때문에 테스트가 불가능하니 실제 단말에서 테스트하셔야합니다.)
실행 결과입니다.
여담이지만 요즘은 증강현실에 관심이 생겨서 한동안은 OpenCV 열심히 가지고 놀것 같습니다ㅋㅋㅋ
'프로그래밍 > iOS' 카테고리의 다른 글
[CoreData] Relationship에 관한 Tip - 연관된 Entity 함께 지우기 (0) | 2013.07.21 |
---|---|
Objective-C에 새로 추가된 NSDictionary, NSArray, NSNumber 리터럴(literal) 표기법 (0) | 2013.07.12 |
UIActivityViewController를 이용하여 다른 앱과 컨텐츠 공유하기 (0) | 2013.02.28 |
objective c SHA256 암호화 (0) | 2013.02.08 |
OTA ( Over the Air AdHoc ) 2 (0) | 2013.01.30 |