本記事はOpenCV Advent Calendar 2017 FFFFFFFFFFFFFFD6 h 日目の記事です。
目的:
HTMLブラウザをbackendにしたOpenCVアプリケーションが開発できるっぽいので試してみましょうかね!
今年はjsモジュール(JavaScript Binding)をネタにする人がいると思いますので、あえて対抗心をメラメラ燃やしまして!
「またまたやらせていただきましたァン!!」
実行結果
システム概要
- broadway daemonを起動し、ブラウザで接続しておく(☆)
- OpenCV applicationは、何も考えずにhighguiを叩くだけ!
- highguiは、gtk3を使って描画をする。
- gtk3/gdkがbroadway clientとして、broadway daemonに描画を転送!
- broadway daemonがブラウザにWebsocketで転送、ブラウザ上は表示・操作可能に!
手順
- Ubuntu Serverをインストール。
- OpenCVをgdk3付きでコンパイル。
- $ broadwayd で、broadway daemonを立ち上げる
- Windows上のChromeで、Ubuntu Serverの8080ポートに接続。専用のデスクトップが表示。
- OpenCV application起動。
メリット
- OpenCV applicationには一切手を加えずに、サーバークライアント環境が構築できる。
- X11, Wayland, RDPと違い、専用のViewerを用意する必要がなく、対応システムが広範囲である。
- SSH接続サポートしているっぽい(コマンドラインヘルプより)。
デメリット
- 同時接続数は1限定っぽい?
まとめ
- gtk3でサポートされているbroadway daemonを使う事で、ブラウザ上で動くOpenCVアプリケーション構築も簡単にできる。
- 2017/10/21 明日のOpenCV Advent Calenderは(nil)さんの(nil)です!!
履歴
2017/10/17(1日目)
資格試験勉強も終わり、今年のOpenCV Advent Calendar何しようかなー、と悩む。
「そういえば、LinuxのOpenCV GUIって、Qtに依存しまくりだなあ… あれ、directfbとか使ってもっと軽量にできるようにしようかなー」と思い立つ。
対応したい機能
- 画像表示
- マルチウィンドウ表示
- キー入力対応
- マウス対応1
- ボタン対応
- マウス対応2
- トラックバー対応
まあ、昔、N88BASICで自前Window Systemとか作ってたし、いけるっしょ!と気楽に考える。
2017/10/18(2日目)
なん・・・だと・・・ DirectFBの公式サイトがつぶれてる。
https://bcopy.github.io/DirectFB/ を見ると、
こんな感じで、いけそう。
- 画像表示 → IDirectFBSurface
- マルチウィンドウ表示 → IDirectFBWindow
- キー入力対応 → IDirectFBInputDevice
- マウス対応1 → IDirectFBInputDevice
- ボタン対応 → IDirectFBInputDevice
- マウス対応2 → IDirectFBInputDevice
- トラックバー対応
しかも、設定ファイルでsystem=x11といれれば、GUI上で動作確認しつつ進められるですって?こりゃもう勝ったな、ガハハハハ。
あれ?GTKがbackendをDirectFBでできる?んじゃ、ぷよぐやみんぐもいらないな、これ設定だけでいけるな!!勝ったな、ガハハハハ!!
2017/10/19(3日目)
勝てなかったよ……
GTK3はbackendとしてDirectFB使えません、と。悲しみ…… さて、どうしたものかなあ。
Module | Windows | Linux | MacOS |
---|---|---|---|
Qt | 〇 | 〇 | 〇 |
Carbon | × | × | 〇 |
Cocoa | × | × | ◎ |
GTK | 〇 | 〇 | 〇 |
W32 | 〇 | × | × |
WinRT | ◎ | × | × |
GTK2 | Windows | Linux | MacOS |
---|---|---|---|
X11 | △ | ◎ | △ |
Win32 | ◎ | × | × |
MacOSX | × | × | ◎ (Quarz API) |
DirectFB | 〇 | 〇 | 〇 |
GTK3 | Windows | Linux | MacOS | HTML |
---|---|---|---|---|
X11 | △ | ◎ | △ | × |
Win32 | ◎ | × | × | × |
MacOSX | × | × | ◎(Quarz API) | × |
Broadway | × | × | × | ◎ |
Wayland | × | 〇 | △ | × |
Mir | × | 〇 | △ | × |
2017/10/20(最終日)
いっそbroadwayでHTMLブラウザ表示をネタにしよう、と思い立つ。