1年以上ぶりですがまだ息してますよ、こんばんは。

転職しまして2014年の4月から東京で暮らしてます。
そのせいかあまり暇もなくなりOpenCVjsなにそれ状態です。
しかたねえので話題を変えて今回はAppleがくそ迷惑にも新言語Swiftを発表しやがったので、SwiftでOpenCV使えんの!?を検証しました。

結論から言うと出来ました。
そんなわけでSwiftでOpenCVを使うまでを解説します。

アメブロに全然慣れないんでいつまで経っても見辛いブログですが勘弁してください。


xcode6のダウンロードやらは色んなサイトに載ってるので省きます。
xcode6を立ち上げていつも通りに新しいプロジェクトを立ち上げると特に変わったことない画面が開きます。
いつも通りNextを押すといつも通りプロジェクト名とか聞かれますが、いつもと違って赤で囲ってるところがSwiftになってる!!!!!

a


ここでSwiftかObjective-Cか選択できます。
どうやらこれまでと同じくObjective-Cも使えるようでちょっと安心しました。

そのままNextでプロジェクトを開いた状態になるんですが、ここからswift感満載になります。

b


ひととおり「@がねえ!」とか「hファイルがねえ!」とか驚いたらxcode閉じます。

次にOpenCVを入れるんですがこれまでと変わらず、最近の流行らしいcocoapods様にお伺いをたててOpenCVを入れます。
cocoapods様がよく分からない人は俺も3ヶ月前に知ったばかりでよく分かってないのでググレカスです。
とりあえずOpenCVを入れるための雑なPodfileがこれ。

platform :ios, "6.0"
pod 'OpenCV'

このテキストを今回のxcodeprojファイルがあるフォルダに入れてターミナル立ち上げてPodfileのあるフォルダに移動してこんな感じでコマンド叩いたらOpenCV入っちゃうからステキ!

c



なんかxcworkspaceファイルとかいうのが出来上がってるのでそっちを開きます。

ではようやくここからコードを書いていきます。
まずSwiftのくそ野郎言語は直接OpenCVのコードを書けないようなので、結局Objective-C++のファイルを追加することになります。

とくにむずかしくなくファイルの追加をやってObjective-C File選べばよいですが、C++のコードを動かすのでファイル拡張しはmmとして保存します。
今回はTestOpenCV.mmとしました。

そうすると次に何かこんなの聞かれます。

d


よく分かりませんがSwiftとObjective-Cを連携してくれるヘッダファイルを作ってくれるみたいなのでYesにします。
そうするとTestOpenCV.mmとSampleSwift-Bridging-Header.hというふたつのファイルが追加されます。

e


ここで「TestOpenCV.h」じゃねえのかよ!と驚いたら何か適当にサンプル画像をプロジェクトに追加します。
それからSampleSwift-Bridging-Header.hにこれまで通りのObjective-Cのインタフェースを書きます。
今回は画像のエッジを検出するクラスメソッドひとつです。

h



それからTestOpenCV.mmに実装を書きます。

ここでもう普通にOpenCVのコードが書けます。



f


で、いよいよstoryboadやらswiftやらとつないでいきますが、これまでとなんざ変わりません。
storyboadを開いて、対応するViewController.swiftも開いてドラッグ&ドロップでいつも通り線をつなぐだけでした。
やってることはstoryboadにUIImageViewとUIButtonを載せてswiftコードにUIImageViewのプロパティとUIButtonを押した時のアクションを設定してるだけです。


g



そして肝心のswiftちゃんなんですがとくに何もすることなくいきなりTestOpenCVで実装したメソッドが呼び出せました。
赤枠で囲ってる部分です。


i


そして実行画面がこんな感じで

mae

ボタンを押すとこんな感じ!!

ato


Swiftちゃんは出来る子だった!!!
とりあえず10数ヶ月ぶりにgithubにソースあげてみました。
寝る前に書き出したんで、肝心の後半になるほどすげえ雑なブログになりましたが以上です。