MRPT:可以从视口获取图像

MRPT: Is is possible to get an image from a viewport?

本文关键字:视口 获取 图像 MRPT      更新时间:2023-10-16

我正在尝试用一个四处移动的相机模拟一个简单的场景。如果我创建另一个视口,我可以操纵视口的摄像机并在场景中移动它。

如何在视口渲染场景中的所有对象后提取 CImage。

提前致谢

上传 2

我正在使用窗口并从getLastWindowImage获取灰色图像

我也尝试了屏幕外渲染方法,但它也返回灰色图像。我的目标是模拟连接到机器人的相机并处理返回的图像以提取特征和检测对象。

目前,我的场景有一个DisplayWindow3d,现在只是尝试从默认视口获取图像。

            mrpt::opengl::COpenGLScenePtr &theScene = vis->get3DSceneAndLock();
            vis->unlockAccess3DScene();
            //Create a rendered
            mrpt::opengl::CFBORender render(800,600);
            //Create an image 
            mrpt::utils::CImage frame(800, 600, 3, false);
            render.getFrame2(*(theScene.pointer()), frame);

它可以像这样完成:

mrpt::gui::CDisplayWindow3D  win;
//... fill your 3D scene
while (win.isOpen())
{
  // Start capturing:
  win.captureImagesStart();
  // Get screenshot:
  mrpt::utils::CImage img;
  bool capture_ok = win.getLastWindowImage(img);
  // Do whatever to img

  // Loop
  mrpt::system::sleep(1);
}

但是,请注意,某些 Windows 主题可能会使图像捕获失败,从而产生灰色图像...Google 在线提供某些解决方案,或者使用替代的屏幕外呈现方法(请参阅示例代码)。