swift:OpenCVをみ使って見ました

概要

を参考(というかソースコードそのまま)に、OpenCVを使ってみました。

開発環境: Xcode7.2(Swift 2.1)、 動作環境:iPod Touch(iOS: 9.2)

修正

参考にした記事は、swiftのバージョンが少し古いため3点ほど修正が必要でした。

ソースコードは、Githubにあります。

Swiftのバージョンに起因する修正(1)

Optional型のデータ処理、例えばクラスキャスト(as)でunwrapを追加しました。

Swiftのバージョンに起因する修正(2)

CGBitmapInfoとCGImageAlphaInfoの結合部分でエラーが発生していました。以下の記事を参考に修正しました。

ios - Combining CGBitmapInfo and CGImageAlphaInfo in Swift - Stack Overflow

Xcodeに起因する修正

実機用にビルドするとリンクエラーが発生しました。シミュレータ向けのビルドでは問題なし。 

Build SettingsでEnable BitcodeをNOに修正しました。

iOS9 - Xcode7GMでビルドすると「does not contain bitcode.」とか言われる - Qiita

結果

青い円が認識している顔です。開始位置(x,y)と幅、高さを取得することができます。

f:id:unokun3:20160109123002p:plain

iOSで顔認識だけであれば、環境構築を含め、CIDetectorを使う方が簡単です。しかし、iOS/Androidの両方で使いたい、あるいは顔認識以外の画像処理を行う場合にはOpenCVを使うことになります。C++ベースの開発ができるかどうかですね。

今後

顔以外の画像認識をしてみたいと思っています。

iOS - 「顔以外」のものを画像認識する - Qiita

関連資料