Webot显示已处理的numpy图像(OpenCV Python)

问题描述 投票:0回答:1

我正在Webots中使用Pioneer 3AT模拟行跟随器。这是我的应用程序涉及群体机器人的第一步。我已放置相机。但是,我无法在模拟显示中实时显示使用OpenCV处理的图像。现在,我打算仅限制车道并使用https://www.cyberbotics.com/doc/reference/display中提到的显示节点进行显示。

但是,我无法启动并运行它。问题是如何在Webots显示器中显示已处理的numpy图像数组?

我当前拥有的代码:

camera = Camera("camera")
camera.enable(TIME_STEP);
display = Display("display")

while (robot.step(timestep) != -1):
    cameraData = camera.getImage();
    image = np.frombuffer(cameraData, np.uint8).reshape((camera.getHeight(), camera.getWidth(), 4))

现在,如何显示image中的display我尝试了imageNewimagePaste等。但是,通过SWIG我收到了很多C / C ++错误,而且我也找不到任何相关的示例。 (Webots模拟器仅附带一个使用display city.wbt和静态图像的示例。我不确定是否可以使用。但是,该示例的摘要代码在C中如下所示。) >

// speedometer
WbDeviceTag display;
int display_width = 0;
int display_height = 0;
WbImageRef speedometer_image = NULL;

// initialize display (speedometer)
if (enable_display) {
    display = wb_robot_get_device("display");
    speedometer_image = wb_display_image_load(display, "speedometer.png");
}

// display background
wb_display_image_paste(display, speedometer_image, 0, 0, false);

P.S .:我在此上花费了4多个小时,但找不到任何解决方案。 Qt上似乎存在类似的问题(我没有使用Qt)。但是,这个问题没有得到答案:Ploting an image with 'imshow' of opencv in webots在我计划将我的整个项目开源时,任何帮助将不胜感激。

编辑1:

根据following note for Java,我尝试了以下方法。但是,我的显示屏空白。经过10小时的努力,没有运气。

[Java]:如果将像素格式参数设置为ARGB,则Display.imageNew函数可以直接显示由Camera.getImage函数返回的图像。

display.imageNew(cameraData, display.ARGB, camera.getHeight(), camera.getWidth())

我正在Webots中使用Pioneer 3AT模拟行跟随器。这是我的应用程序涉及群体机器人的第一步。我已放置相机。但是,我无法显示...

python numpy opencv swig webots
1个回答
0
投票

当前,我找到了一种解决方法(实际上不是解决方案;因此,我将不接受此作为答案)。

© www.soinside.com 2019 - 2024. All rights reserved.