愚痴 [プログラミング]
Cugwinのg++とVideo For Windowを使って、ステレオでキャプチャーするプログラムを作った。
1)開始→
2) capGrabFrame()×2→
3) capFrameCallback()が2つ来るのを待つ→
4) 2つの画像のズレを計算する→
5) 位置を合わせて推定左を赤でマスク、推定右をシアンでマスク→
6) 画像を表示する→
7) 2)へ戻る
をという物だったが、数フレーム/秒ぐらいしか出ない。
高速化するには、4)の処理をなんとかするべきなのだが、
画サイズを変えても大差が無いので、2)→3)の間が遅いようだった。
そこで、Captureデータを自動で投げて貰う為に、
capCaptureSequenceNoFile();
と、
capVideoStreamCallback()
で、取り込もうとしたが、1回目の
capVideoStreamCallback()
が終わった後に、「バンドルされていない例外が発生しました」になる。
「ファイルが無いのに書き込みに行っているのかな?」っとも思い、
capCaptureSequence();の方にして書き込むようにしてみるても、同じ。
分かった事は書き込んだ後に発生している事だけ。
どちらも、capVideoStreamCallback()を呼ばないようにすれば、正常に動作する。
VC++ Express
を入れて、どの辺りで例外が発生しているのか見ようとしたら、
capDriverConnect()で失敗するようになりやがる。
デバッガ有りだと失敗して、デバッガ無しだと成功する最低な状態。
プレビュー有りで、プレビューウィンドウがあると、
capCaptureSequenceNoFile()
で、
capFrameCallback()
が自動で来るが、何故か、プレビュウウィンドウが表示されていないと来ない。
これも、理由が分からない。が、まぁ、それはそういう仕様なのだろう。
う~っ頭いてぇ~
コメント 0