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カメラ用のドライバが
まだ、ちゃんと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非標準のライブラリは
テスト用のアプリケーションとしてQtをGUIに使った画像表示アプリがあった。ちょっと試してみると、 ただカメラから読んで表示しているだけとはいえ、かなり軽い。
ちゃんとAPIのリファレンスを読んで、僕のアプリに組み込んで実行効率の比較をしてみよう。
マシンビジョン用カメラメーカの旧PointGrey社、現FLIR社のGEN<i>CAMカメラ用ドライバであるSpinnakerがmacOSに対応してた。Application noteは去年の10月のタイムスタンプで、もう何年も前からmacOSに対応するよするよ、といいながらのびのびになっていたもので、できたら教えてね、と言ってあった。なんの連絡もくれなかったので、スルーされてたようである。まったくもう...
Spinnakerは当然FLIRのカメラにしか使えないし、他のメーカのGEN<i>CAMカメラが繋がっていてもSpinnakerは列挙しない。しかしそれなりに枯れたライブラリになってるはずなので、効率は期待できる(Windowsではさくさく、macOSではのたのた、というのはよくあるけど)。
これで、macOS用のGEN<i>CAMカメラ用のドライバが
- 僕がObjective-Cで昔書いたもの(GEN<i>CAM完全対応とは言えない)
- aravisのObjective-Cラッパ
- (FLIR社カメラに対してのみ)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非標準のライブラリは
- pkg-config
- libomp
- libusb
テスト用のアプリケーションとしてQtをGUIに使った画像表示アプリがあった。ちょっと試してみると、 ただカメラから読んで表示しているだけとはいえ、かなり軽い。
ちゃんとAPIのリファレンスを読んで、僕のアプリに組み込んで実行効率の比較をしてみよう。
2020-02-16 20:45
nice!(0)
コメント(0)
コメント 0