Posted at

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

More than 1 year has passed since last update.

本記事は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ブラウザ表示をネタにしよう、と思い立つ。