2015年06月08日

OpenCVでのエラー処理

OpenCVなどで動画ファイルを扱うと、
ときおり「動画ファイルのせい」でプログラムが落ちたりします。

要するに、動画ファイルはデータファイルとしては
あまりにも巨大なため、よくバグっているのです。

静止画ではあまり起こらない現象です。

市販の動画プレイヤーは完璧なエラー対策が施されているため、
「動画ファイルのバグ」にはなかなか気がつきませんのよ。

自分が作ったプログラムにバグがなかったとしても、
結果としてそれがプログラムのバグになってしまいます。

アプリ内部のコードと、
参照する外部ファイルを合わせて
ひとつのプログラムとして考える必要があるのです。

これは動画ファイルに限った考えではありません。

どのような種類の外部ファイルであれ、
同様の対策は施しておくべきです。

例えばこんな感じ。

cv::Mat img;
if (img.data == NULL)
{
textToLog("\n・動画データが破損している可能性があります。\n");
return;
}

場合に応じていろんなエラー処理方法があると思いますが、
要は「外部ファイルは疑いの目で見よ!」でありまするぞ。

posted by ikaninja at 17:42| Comment(0) | C++

2014年12月11日

'exit' の宣言を確認してください。

備忘録。

OpenCVとOpenGLを同時に使用。

コンパイルすると
'exit' の宣言を確認してください。
なるエラーが。

調べると
http://skyblueryu.blog54.fc2.com/blog-entry-29.html
こんな感じ。

Visual Studioのバージョンの問題ではないですな。
ひどい。

とにかくglut.hのincludeを最後にすること!
それだけであります!

posted by ikaninja at 16:54| Comment(0) | C++

OpenCVとOpenGLをVisual Studio 2010にて同時使用。

久々の備忘録。

OpenCVとOpenGLをVisual Studio 2010にて同時使用。

二台のWEBカメラから動画を取り込み、
オブジェクトの3D座標を取得(OpenCVの役割)。

その3D座標を元にして、
リアルタイムでディスプレイを書き換え(OpenGLの役割)。

環境はWindows7Proの64ビット。

OpenCVは
http://physics-station.blogspot.jp/2013/03/opencv-visual-studio.html
を参照。

OpenGLは
http://ajdkbsuvi.blogspot.jp/2010/12/visual-c-2010opengl.html
を参照。
glut32.dll ⇒ "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib"
のところは誤植でしょう。正解は、glut32.lib ⇒ですね。

複数台のWEBカメラを繋げる方法は
http://www.moonmile.net/blog/archives/2488
こんな感じ。
USB3のポートで試したところ特に問題なし。

これでばっちりです。

これにさらにOpenALを加えると、
音源定位もできるのでさらに臨場感アップ。

マックではもっと簡単にできるという噂ですが、
それはスティーブに聞いてくれ。

でわ。

posted by ikaninja at 11:11| Comment(0) | C++