处理 rgb 图像

Processing rgb images

我正在使用 Drake 来实现视觉伺服方案。为此,我需要处理彩色图像并提取特征。

我正在使用 ManipulationStation class,并且我已经将 rgbd_sensor 对象的彩色图像发布到 LCM 通道(在 c++ 中)。现在我想在模拟过程中处理图像。 我知道最好在内部处理图像(不使用 ImageWriter),为此,我不能在 LCM 通道上使用 image_array_tImageRgbaU8,我必须将图像转换为 EigenOpenCV 类型。

然后我将在这些库中使用特征提取功能。这些特征将在控制律中使用。

你有没有关于如何用 c++ 编写系统或代码的示例,可以将我的 Drake 图像 转换为 OpenCVEigen 类型?最好的方法是什么?

在此先感谢您的帮助!

阿尔诺

当前没有将 drake::Image 转换为 Eigen 或 OpenCV 的示例,但它应该非常简单。

您应该做的是创建一个类似于 ImageWriter 的系统。它以图像作为输入,并对图像进行所需的任何处理。您将其输入端口连接到 RgbdSensor 的输出端口(同样,如 ImageWriter。)唯一的区别是,您不是获取图像并将其转换为 lcm 数据类型,而是将其转换为您的OpenCV 或 Eigen 类型并应用你的逻辑。

如果你看,ImageWriter declares a periodic publish event. Change that to (probably) a discrete update event (still periodic, I'd imagine) and then change ImageWriter::WriteImage 回调到你的“Image-to-OpenCV”回调。

最后,您还可以声明一个输出端口,使您转换后的图像到其他系统。