プロが教える店舗&オフィスのセキュリティ対策術

webカメラで撮影した映像を,OpenGLを用いて表示することを考えております.
撮影した映像を,できる限り高速に表示する方法を教えていただけないでしょうか?
用途としては,仮想世界の視点移動に合わせて,カメラで撮影した画像を張り付けたポリゴンを
自由な視点から観察することを考えています.

私の考えつく解決策は,以下の通りです.

1.OpenGLの背景(バックバッファ)の領域を指定し,書き込む
2.ポリゴンにテクスチャマッピング

2.について実装してみたのですが,表示速度がいまひとつでした.
実装としては,テクスチャ用画像を,毎フレーム更新して,
テクスチャマッピングする方法をとっています.


コードを抜粋したものは,以下の通りです.

------------------------------------
glBindTexture(GL_TEXTURE_2D, g_texture[0]);//テクスチャの指定
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
gluBuild2DMipmaps(GL_TEXTURE_2D, 3, texture_img[0]->width,texture_img[0]->height, GL_RGB,GL_UNSIGNED_BYTE,texture_img[0]->imageData);
----------------------------------
※texture_img[0]を毎フレーム更新して,テクスチャマッピング

お忙しいと思いますが,
アドバイスをいただけますと幸いです.
よろしくお願いいたします.

A 回答 (2件)

画像形式がOpenCVだったので補足ですが,


OpenCVのキャプチャを使っている場合は,
それ自体が遅い可能性もあるのでご注意を.

キャプチャ自体が遅い場合は,
面倒ですがキャプチャ部分はOpenCVを使わず,
DirectShowなどで実装すると速くなるかもです.

なお,画像サイズによっても
随分とフレームレートが変わってきます.
    • good
    • 0

OpenGLを久しく扱っていないので怪しいですが,


2.で実装された表示速度に関しては,
gluBuild2DMipmaps関数だとミニマップの生成で
オーバーヘッドが生じていると思われるので,
gluBuild2DMipmaps関数の代わりに
glTexImage2D関数で実装してみると
ちょっと速くなるかもです.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!