iPadでopencv
iPad上で動画をキャプチャしてOpenCVの処理をかけるさいのメモです。
OpenCVの動画キャプチャ関数がそのまま使えないので注意が必要です。
iOS開発やxcodeがよく分かっていないので苦労しました。
コード1式(xcode用): http://navi.cs.kumamoto-u.ac.jp/~koutaki/VideoCamera-opencv.zip
以下を参考(というかほとんど同じ)にしています:
実践! iPhoneアプリ開発 http://news.mynavi.jp/column/iphone/041/index.html
上記と差分・注意点です。
- 公式ページよりiOS用のopencv2.frameworkをDL
- Build phaseのLink Binary Librariesに追加
- Build settingsでCompiler for C/C++をApple LLVM compiler 4.2
- Apple LLVM compiler 4.2-Language
- VideoCameraViewController.mをVideoCameraViewController.mmにする(C++対応にする)
opencvのヘッダはVideoCameraPrefix.pchファイルに以下を追加します。
#ifdef __cplusplus #import <opencv2/opencv.hpp> // opencv #import <Accelerate/Accelerate.h> // lapackを使うなら #endif
captureOutputに以下のようにopencv関数を使っています。
//******************************************************************* // OpenCV画像処理ルーチン // キャプチャ画像から画像バッファを取得 unsigned char* img = (unsigned char*)CVPixelBufferGetBaseAddress(buffer); // OpenCV形式の画像に変換 cv::Mat *cimg = cvMatFrombufGray(img,width,height); //-------------------------- // ここに画像処理部分を書く cv::Canny(*cimg, *cimg, 20, 20); //-------------------------- // 結果出力:imgを書き換える for(int ptr = 0;ptr < width * height;ptr++){ img[ptr*4]=img[ptr*4+1]=img[ptr*4+2] = cimg->data[ptr]; } //*******************************************************************