カメラアプリ設計
- 憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門を読み切った。
噂以上の良書だったと思う。オブジェクト間の関連を,どのように設計し,コードレベルではどのように表現されるべきかということが実例と共に書かれている。 - なんとなくフラストレーションが溜まってるので,基本的なカメラアプリケーションをオブジェクト指向を用いて分析・設計してみる。
もちろん失敗するつもりで。 - うまくいったら研究等で使用するアプリケーションの雛形に持っていこうと思っているけれど,オブジェクト指向な開発っていうのは必ずしも研究向きではないということも事実として自覚しておくべき。
まあなんというか,酔狂でやってみる。 - 参考資料はこのあたり↓
オブジェクトモデル化技法 - Wikipedia:
はてなブックマーク - I wanna become a saddle of you. / オブジェクト指向:
仕様書
- カメラから取得した画像を,ウインドウに表示する。
- 取得された画像に対して,画像処理を行う。画像処理の具体的な中身は,今回は言及しない。その結果もまたウインドウに表示される(表示しないこともある)。
- ユーザは画像処理のパラメータを,ウインドウを通して設定する。
- 画像処理のパラメータ等を,ウインドウに表示してユーザに提示する。
クラス候補の抽出
- 名詞を抜き出していく
- カメラ
- ウインドウ
- 画像
- 画像処理
- パラメータ
クラスの仕様
カメラコントローラクラス
- (名前を変更)カメラ→カメラコントローラ
- 仕様
- カメラコントローラは,はじめにカメラデバイスをOpenする。このとき,キャプチャのサイズやFPSを指定できる(できない場合もある)。
- カメラコントローラはカメラデバイスにキャプチャ要求を発行し,現在の画像を取得する。
- カメラの使用を停止するとき,カメラコントローラはカメラデバイスをCloseする。
- クラス図
カメラコントローラ キャプチャサイズ カメラデバイスをOpen
カメラデバイスをClose
キャプチャサイズ設定
キャプチャサイズ取得
キャプチャ
画像クラス
- 仕様
- 画像クラスはIplImageで代用するので略。
- クラス図
- IplImageに準拠
画像処理クラス
- 仕様
- 画像処理は,パラメータに応じた画像処理を行う。
- クラス図
画像処理クラス 画像処理に用いるパラメータ 画像処理を実行
パラメータを設定
パラメータを取得 - 備考
- 画像処理の内容は今回は言及していないため,クラスの内容が極端に抽象的になってしまっている。
ウインドウクラス
- 仕様
- OpenCVの機能を使用
パラメータ表示用ウインドウ
- 仕様
- 画像処理クラスなどからパラメータを取得し,ウインドウに表示する。
- クラス図
- 略
パラメータ設定用ウインドウ
- 仕様
- 画像処理クラスなどにパラメータを設定するためのGUIを提供する。
- クラス図
- 略
増えた/消えたクラスの説明
- パラメータ表示用ウインドウ/パラメータ設定用ウインドウ
- 通常の画像表示用ウインドウとは処理内容が異なるため