OpenCVなどで動画ファイルを扱うと、
ときおり「動画ファイルのせい」でプログラムが落ちたりします。
要するに、動画ファイルはデータファイルとしては
あまりにも巨大なため、よくバグっているのです。
静止画ではあまり起こらない現象です。
市販の動画プレイヤーは完璧なエラー対策が施されているため、
「動画ファイルのバグ」にはなかなか気がつきませんのよ。
自分が作ったプログラムにバグがなかったとしても、
結果としてそれがプログラムのバグになってしまいます。
アプリ内部のコードと、
参照する外部ファイルを合わせて
ひとつのプログラムとして考える必要があるのです。
これは動画ファイルに限った考えではありません。
どのような種類の外部ファイルであれ、
同様の対策は施しておくべきです。
例えばこんな感じ。
cv::Mat img;
if (img.data == NULL)
{
textToLog("\n・動画データが破損している可能性があります。\n");
return;
}
場合に応じていろんなエラー処理方法があると思いますが、
要は「外部ファイルは疑いの目で見よ!」でありまするぞ。
2015年06月08日
OpenCVでのエラー処理
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を最後にすること!
それだけであります!
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を加えると、
音源定位もできるのでさらに臨場感アップ。
マックではもっと簡単にできるという噂ですが、
それはスティーブに聞いてくれ。
でわ。
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++