HTML
OpenCV
gtk
GTK3
broadway

ブラウザ上でもCVしたい! (jsモジュール?知らない子ですね)

本記事はOpenCV Advent Calendar 2017 ‭FFFFFFFFFFFFFFD6‬ h 日目の記事です。

目的:

HTMLブラウザをbackendにしたOpenCVアプリケーションが開発できるっぽいので試してみましょうかね!
今年はjsモジュール(JavaScript Binding)をネタにする人がいると思いますので、あえて対抗心をメラメラ燃やしまして!
「またまたやらせていただきましたァン!!」

実行結果

image.png

システム概要

  1. broadway daemonを起動し、ブラウザで接続しておく(☆)
  2. OpenCV applicationは、何も考えずにhighguiを叩くだけ!
  3. highguiは、gtk3を使って描画をする。
  4. gtk3/gdkがbroadway clientとして、broadway daemonに描画を転送!
  5. broadway daemonがブラウザにWebsocketで転送、ブラウザ上は表示・操作可能に!

image.png

手順

  1. Ubuntu Serverをインストール。
  2. OpenCVをgdk3付きでコンパイル。
  3. $ broadwayd で、broadway daemonを立ち上げる
  4. Windows上のChromeで、Ubuntu Serverの8080ポートに接続。専用のデスクトップが表示。
  5. OpenCV application起動。

メリット

  1. OpenCV applicationには一切手を加えずに、サーバークライアント環境が構築できる。
  2. X11, Wayland, RDPと違い、専用のViewerを用意する必要がなく、対応システムが広範囲である。
  3. SSH接続サポートしているっぽい(コマンドラインヘルプより)。

デメリット

  1. 同時接続数は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. マルチウィンドウ表示
  3. キー入力対応
  4. マウス対応1
  5. ボタン対応
  6. マウス対応2
  7. トラックバー対応

まあ、昔、N88BASICで自前Window Systemとか作ってたし、いけるっしょ!と気楽に考える。

2017/10/18(2日目)

なん・・・だと・・・ DirectFBの公式サイトがつぶれてる。
https://bcopy.github.io/DirectFB/ を見ると、
こんな感じで、いけそう。

  1. 画像表示 → IDirectFBSurface
  2. マルチウィンドウ表示 → IDirectFBWindow
  3. キー入力対応 → IDirectFBInputDevice
  4. マウス対応1 → IDirectFBInputDevice
  5. ボタン対応 → IDirectFBInputDevice
  6. マウス対応2 → IDirectFBInputDevice
  7. トラックバー対応

しかも、設定ファイルで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ブラウザ表示をネタにしよう、と思い立つ。