SOURCEFORGEというサイトで入手できる。
Swiftから使う方法
C++で書かれているらしく、Swiftから直接扱えないので、Objective-C++を経由して扱う。簡単に書くと、
- SwiftのプロジェクトにWrapper(間を取り持ってくれるクラスだ)となるObjective-Cのクラスを作る(ex. OpenCVWrapper.hと同.m)
- その過程でSwiftとObjective-Cのクラスを同居させるためのBridging-Header.hを作る
- Wrapperクラスとして作ったObjective-Cのファイル「クラス名.m」の拡張子を、Objective-C++の拡張子の「クラス名.mm」に変更
- Bridging-Header.hに #import "OpenCVWrapper.h" を
- Wrapperクラスのヘッダファイルに #import <UIKit/UIKit.h> を
- Wrapperクラスの実装ファイル(さっき.mmにしたとこ)には以下のように
- #import <opencv2/opencv.hpp>
- #import <opencv2/imgcodecs/ios.h>
- #import "OpenCVWrapper.h"
- Wrapperクラスの中にOpenCVにアクセスするObjective-C++のメソッドを書き、Swiftからそのメソッドを使うことで機能を使用する
……らしい。
まだよくわかってないけど。
いっぱい出るWarningを消す
こんなのがいっぱい出た |
Xcodeでそのままコンパイルしたら、
- Not a Doxygen trailing comment
- Empty paragraph passed to '@note' command
などというよくわからないWarningが86個も出てしまった。
気になるならここをNoに |
iOS、Xcodeの必要なメッセージまで消えちゃうかどうかは知らん。
IplImageに変換せねば…
OpenCVで使われてる画像管理の構造体がIplImage。
iOSの画像をこいつに変換してやらないといろいろ使えないのが面倒。
調べたところ、CGImageからIplImageへの変換方法は一筋縄でいかず、Objective-C++でIplImageの変数とポインタを共有するContextを作ってそれに描画するとか、色空間を変換するとか、やたら複雑。
他のやり方がわからないので丸コピーするみたいな感じになってしまった。
0 件のコメント:
コメントを投稿