9章クラスプラットフォームとネイティブウィンドウ
9.1 ウィンドウで作業する
前章ではHighGUIツールキットを紹介してきました。そこでは、HighGUIツールキットがファイルやデバイス関連のタスクで便利に使えるということを見ました。それらの機能に加え、OpenCVの組み込みのHighGUIライブラリは、ウィンドウの作成、ウィンドウへの画像の表示、ウィンドウ関連のユーザー操作などの機能も提供しています。このように、OpenCVにはもともとグラフィカルユーザーインタフェース(GUI)機能がライブラリの一部として備わっています。これらは安定性と移植性†1が高くて扱いやすく、長年使われてきたという実績もあります。
[†1] 移植性が高い理由は、さまざまなプラットフォーム上でネイティブのウィンドウGUIを利用しているからです。具体的には、LinuxではX11、macOSではCocoa、WindowsではWin32 APIを使います。ただしここで言う移植性とは、このライブラリで実装されているプラットフォームに限定したものです。OpenCVは使用できても、HighGUIライブラリは実装されていないプラットフォームもあります(Androidなど)。
HighGUIライブラリは便利である反面、UI機能はそれほど洗練されたものではないという短所もあります。そこで、その「ネイティブ」のインタフェースをQtというGUIツールキットに変えることで、HighGUIのUIの部分を完成度の高いものにし、より多くの便利な機能を新たに追加しようとする取り組みが行われてきました。Qtはそれ自体がクロスプラットフォームのツールキットなので、新しい機能を実装する場合でも、そのライブラリ内で一度だけ実装すればよく、対象プラットフォームごとに行う必要はありません。言うまでもなく、これはQtによるインタフェース開発の最大の魅力です。将来的には、Qtの機能はますます拡張されていく一方で、ネイティブのHighGUIインタフェースは開発の止まったレガシーなコードになっていくでしょう。 ...
Get 詳解 OpenCV 3 ―コンピュータビジョンライブラリを使った画像処理・認識 now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.