画像入出力に慣れ親しもう、ということで
IEEE1394カメラモジュールを用いてデジタルカメラを設計製作する。
仕様:
ボタンでシャッターを切り、静止画としてPCに保存が可能。
撮影時間を字幕として画像にインポーズする。
結果:
外部トリガを押すことによって写真が保存できた。
ちょうど撮影時刻も書き込まれるので、
外部トリガとキーボードのprintscrnキーとを同時押しして、外部トリガが押されたときの写真がとれているかも確認してみた。
printscrnキーと トリガ。
できた画像はこんな感じ。まずは写真側から。
一体カメラはどこを向いていたのだ(笑)。ボタンで両手が塞がっていたので・・・。
そのときの時刻はというと・・・
時刻もちゃんとそのときのものが撮れている模様。
考察:
実はこのプログラム、終了できないという問題点が。
CALLBACK関数でWM_TIMER信号を拾って写真を撮るのだが、
カメラから画像をキャプチャする動作のときに、外部トリガの入力待ちになってしまい、プログラムが停止してしまう。
そのため、WM_CLOSE信号やWM_DESTROY信号が送られても、処理待ちになってしまい、終了しない。
信号を送った後、外部トリガを押すと、信号が処理されてウィンドウが破棄される。
これについては、解決方法が見付からず修正できないまま断念することに。
また、カメラ初期化時に画像サイズ取得のために1度画像をキャプチャする必要があるのだが、
ここでも止まってしまう。そのため、プログラムを起動した途端にフリーズしたようになってしまう。
CALLBACK関数で、WM_CHAR信号を拾ったときに初めてカメラ初期化、画像キャプチャしてみようとしたが、
プログラム実行開始からすぐにWM_TIMER信号が処理されてしまい、初期化されてないにもかかわらず
そこでキャプチャをしようとしてしまうため、うまく画像を取得できなくなってしまった。(でも終了はできる(笑))
結局どちらも改善できずに断念。
外部トリガが手動クロックのような感覚になってしまった。
最初は画像が1枚しか保存できず、2枚目以降は同じ画像に上書きして保存していたのだが、
通し番号をつけて保存することで上書きせずに画像を残すように改良した。
外部トリガをすばやく連打して、撮った写真をつなげていくとパラパラ漫画のような動画が作れる。
動画は