介绍ROS中用到的pgm图像 如何由cv Mat生成pgm
介绍ROS中用到的pgm图像 如何由cv Mat生成pgm
ROS(Robot Operating System)是一个开源的机器人操作系统平台,提供了软件库和工具以帮助开发机器人应用。在ROS中,pgm(Portable Gray Map)图像是地图数据的一种常用格式,通常用于导航和定位任务。pgm图像是一种灰度图像,可以存储每个像素的灰度值,范围从0(黑色)到255(白色)。
为了从OpenCV的Mat对象生成pgm图像,你需要执行以下步骤:
- 首先,确保你已经安装了OpenCV库。在ROS中,你可以使用rosdep来安装相应的依赖项。例如,对于ROS Noetic版本,可以通过以下命令安装:
1
2sudo apt-get install ros-noetic-opencv-contrib
- 在你的C++代码中,包含所需的头文件:
1
2
3
4#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp> - 将你的原始图像转换为灰度图像。这可以使用OpenCV的cvtColor()函数完成。例如:
1 |
|
- 将灰度图像调整到合适的尺寸和灰度范围。你可能需要对灰度图像进行缩放、裁剪或阈值处理。例如,使用resize()函数进行缩放:
1 |
|
- 将处理后的灰度图像保存为pgm文件。你可以使用OpenCV的imwrite()函数将Mat对象保存为pgm格式的文件。例如:
1 |
|
完成以上步骤后,你就可以将OpenCV的Mat对象转换为ROS中使用的pgm图像格式了。
pgm与png的不同之处
PGM(Portable Gray Map)和PNG(Portable Network Graphics)都是图像文件格式,它们有一些重要的区别:
- 颜色模式:
- PGM:PGM 图像是一种灰度图像格式,只包含灰度信息。灰度值的范围通常是从 0(黑色)到 255(白色)。
- PNG:PNG 是一种支持多种颜色模式的图像格式,包括灰度、真彩色(RGB)、带透明通道的真彩色(RGBA)等。这意味着 PNG 可以存储更丰富的颜色信息。
- 文件大小和压缩:
- PGM:PGM 图像通常使用无损压缩,但压缩效果相对较弱。因此,PGM 图像文件可能相对较大。
- PNG:PNG 图像使用的是 DEFLATE 无损压缩算法,这使得 PNG 文件在保持图像质量的同时,具有较小的文件大小。
- 透明度支持:
- PGM:由于 PGM 只存储灰度信息,所以不支持透明度。
- PNG:PNG 支持透明度信息,可以使用带有 Alpha 通道的 RGBA 颜色模式来表示透明度。
- 兼容性和应用场景:
- PGM:PGM 格式简单,易于解析和处理,常用于科学计算、图像处理和机器人领域,如 ROS(Robot Operating System)中的地图表示。
- PNG:PNG 格式广泛应用于 Web 和各种图像编辑软件中,因为它支持丰富的颜色模式和透明度,且具有较好的压缩效果。
介绍ROS中用到的pgm图像 如何由cv Mat生成pgm
https://qiangsun89.github.io/2023/04/27/介绍ROS中用到的pgm图像-如何由cv-Mat生成pgm/