处理 rgb 图像
Processing rgb images
我正在使用 Drake 来实现视觉伺服方案。为此,我需要处理彩色图像并提取特征。
我正在使用 ManipulationStation class,并且我已经将 rgbd_sensor
对象的彩色图像发布到 LCM 通道(在 c++ 中)。现在我想在模拟过程中处理图像。
我知道最好在内部处理图像(不使用 ImageWriter),为此,我不能在 LCM 通道上使用 image_array_t
或 ImageRgbaU8
,我必须将图像转换为 Eigen 或 OpenCV 类型。
然后我将在这些库中使用特征提取功能。这些特征将在控制律中使用。
你有没有关于如何用 c++ 编写系统或代码的示例,可以将我的 Drake 图像 转换为 OpenCV 或 Eigen 类型?最好的方法是什么?
在此先感谢您的帮助!
阿尔诺
当前没有将 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”回调。
最后,您还可以声明一个输出端口,使您转换后的图像到其他系统。
我正在使用 Drake 来实现视觉伺服方案。为此,我需要处理彩色图像并提取特征。
我正在使用 ManipulationStation class,并且我已经将 rgbd_sensor
对象的彩色图像发布到 LCM 通道(在 c++ 中)。现在我想在模拟过程中处理图像。
我知道最好在内部处理图像(不使用 ImageWriter),为此,我不能在 LCM 通道上使用 image_array_t
或 ImageRgbaU8
,我必须将图像转换为 Eigen 或 OpenCV 类型。
然后我将在这些库中使用特征提取功能。这些特征将在控制律中使用。
你有没有关于如何用 c++ 编写系统或代码的示例,可以将我的 Drake 图像 转换为 OpenCV 或 Eigen 类型?最好的方法是什么?
在此先感谢您的帮助!
阿尔诺
当前没有将 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”回调。
最后,您还可以声明一个输出端口,使您转换后的图像到其他系统。