«GLSL で画像処理 (4) 背景差分 最新 地理院地図 3D を Oculus Rift で見てみる»

床井研究室

※このブログは遅くとも 2027 年 3 月に管理者の定年退職により閉鎖します (移転先は管理者本人共々模索中)

■ 2014年08月26日 [OpenGL][GLSL] GLSL で画像処理 (5) フレーム間差分

2014年08月26日 21:07更新

雨が凶暴

前回,雨が凶暴と書いてからも雨は猛威を振るい続け,非常に痛ましいことになっております.この前の日曜プログラミングで作った地理院地図 3D を Oculus Rift (DK2 じゃないやつ) で見るプログラムで被災地の上をフライスルーしてみたのですが,住宅と山が入り組んだ非常に複雑な地形でした.私が途方に暮れていても仕方ないのですけど,それでも無力感で下を向いてしまいます.

このムービーは和歌山県内の山間部です.

フレーム間差分

前回のサンプルプログラム (3) は,わずかな書き替えでフレーム間差分の表示を行うようにすることができます.キャプチャした画像を転送するテクスチャを,フレームごとに切り替えるだけです.

  ...
  
  // uniform 変数のインデックスの検索(見つからなければ -1)
  const GLuint image0Loc(glGetUniformLocation(program, "image0"));
  const GLuint image1Loc(glGetUniformLocation(program, "image1"));
  
  // テクスチャの格納先
  int select = 0;
  
  // ウィンドウが開いている間繰り返す
  while (window.shouldClose() == GL_FALSE)
  {
    if (camera.grab())
    {
      // キャプチャ映像から画像を切り出す
      cv::Mat frame;
      camera.retrieve(frame, 3);
      
      // 切り出した画像をテクスチャに転送する
      cv::Mat flipped;
      cv::flip(frame, flipped, 0);
      glBindTexture(GL_TEXTURE_RECTANGLE, image[select = 1 - select]);
      glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0, 0, 0, frame.cols, flipped.rows, GL_BGR, GL_UNSIGNED_BYTE, flipped.data);
    }
    
    ...

書き替え量がわずかなので,独立したプログラムを用意する必要はないと思ったんですが…


編集 «GLSL で画像処理 (4) 背景差分 最新 地理院地図 3D を Oculus Rift で見てみる»