SSブログ

Spinnaker macOS版 [日常のあれやこれや]

夜中に何度も目が覚める、なんてことがまだ続いていて、海外出張の尾を引いている。疲れがとれない。

マシンビジョン用カメラメーカの旧PointGrey社、現FLIR社のGEN<i>CAMカメラ用ドライバであるSpinnakerがmacOSに対応してた。Application noteは去年の10月のタイムスタンプで、もう何年も前からmacOSに対応するよするよ、といいながらのびのびになっていたもので、できたら教えてね、と言ってあった。なんの連絡もくれなかったので、スルーされてたようである。まったくもう...

Spinnakerは当然FLIRのカメラにしか使えないし、他のメーカのGEN<i>CAMカメラが繋がっていてもSpinnakerは列挙しない。しかしそれなりに枯れたライブラリになってるはずなので、効率は期待できる(Windowsではさくさく、macOSではのたのた、というのはよくあるけど)。

これで、macOS用のGEN<i>CAMカメラ用のドライバが
  1. 僕がObjective-Cで昔書いたもの(GEN<i>CAM完全対応とは言えない)
  2. aravisObjective-Cラッパ
  3. (FLIR社カメラに対してのみ)Spinnaker
のみっつが手に入ったことになる(macOSに対応したドライバを供給している他のカメラもあるけど、今とりあえず僕は使っていない)。今仕事で使っているカメラは3社あるので、FLIR以外のカメラ用には1.か2.になるけど、今のところFLIRあるいはPointGreyのラベルのついたカメラが一番多くて、Spinnakerを評価してみて損はない。

まだ、ちゃんとAPIをみてないんだけど、インターフェイスはCとC++があるようで、同じ機能なのかどうかわからない。しかしいずれはSwiftから呼びたいと思っているので、もし機能として同じならCのAPIを使って、Swiftのラッパを書いておくのがいいだろう(SwiftからC++は直接呼べなくて、Objecitve-C++でラップしてObjective-Cのクラスとして呼ぶ必要があるらしい。Objective-C++と同じ思想で共存できるようにしてもいいと思うんだけど、AppleはSwiftでC++を置き換える、ぐらいのつもりでいるのかもしれない)。

ヒマがあればaravisを解析してSwiftに書き直したものを作ろうと思っていた。しかしmacOSドライバのないメーカのカメラがメインになる事態に突入しない限りは、これはペンディングだな。

一般的にドライバがWindows版からmacOSに移植された場合、WindowsのAPIをmacOSに変換するようなレイヤがライブラリとして一緒に供給されて、それを前提に動くようにしたものがよくある。そのレイヤの実装によって実行効率や信頼性が大きく左右されることになる。「とりあえずなんとか動きます」というようなものはたいてい使い物にならない。

Spinnakerはもうずいぶん前からubuntu版があって、それがWindows版とどのくらい共通になっているのかよくわからないけど、それなりにちゃんと動いているらしいので、それをmacOSに移植した、という感じだろう。Spinnakerが必要とするmacOS非標準のライブラリは のみっつだけで、libompはおそらくmacOSでいうならGCDの代わりで、libusbはUSB3接続のカメラ用のIO-kitの代わりだろう(GigEカメラはsocketを呼ぶのでIO-kitは経由しない。ちなみにmacOS版のlibusbはIO-kitを呼ぶように書かれたラッパになってた)。

テスト用のアプリケーションとしてQtをGUIに使った画像表示アプリがあった。ちょっと試してみると、 ただカメラから読んで表示しているだけとはいえ、かなり軽い。

ちゃんとAPIのリファレンスを読んで、僕のアプリに組み込んで実行効率の比較をしてみよう。
nice!(0)  コメント(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。