python栅格地图
时间: 2025-01-06 13:46:16 浏览: 8
### 创建和处理栅格地图
#### 导入必要的库
为了创建或处理栅格地图,首先需要导入一系列支持图像操作、数值计算以及绘图功能的库。这些库包括`cv2`用于读取和保存图像文件,`numpy`提供高效的数组运算能力,而`matplotlib.pyplot`则负责图形化展示。
```python
import cv2
import numpy as np
from matplotlib import pyplot as plt
```
#### 初始化栅格地图
可以定义一个函数来初始化一张空白的栅格地图,默认情况下设置为全零矩阵表示无障碍物的空间;也可以加载现有的图片作为基础地形图[^2]。
```python
def init_grid_map(width, height):
"""Initialize a grid map with given dimensions."""
return np.zeros((height, width), dtype=np.uint8)
# 或者从现有图像加载
image_path = 'path_to_image.png'
grid_map = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
plt.imshow(grid_map, cmap='gray')
plt.show()
```
#### 添加障碍物到栅格地图
对于自动生成的地图来说,在特定位置标记不可通行区域是非常重要的一步。可以通过修改对应坐标的像素值完成此操作,通常采用较高的灰度级数代表墙壁或其他类型的阻碍物[^3]。
```python
def add_obstacle(map_data, points_list):
"""Mark specified positions on the map as obstacles (non-traversable)."""
for point in points_list:
y, x = int(point[0]), int(point[1])
if 0 <= y < map_data.shape[0] and 0 <= x < map_data.shape[1]:
map_data[y][x] = 255 # Assuming white color represents obstacle
```
#### 可视化路径规划起点终点
当涉及到导航应用时,往往还需要指定起始点与目标地点以便后续进行路径搜索算法的设计。这同样可通过调整相应坐标处的颜色实现直观显示效果[^4]。
```python
start_point = [10, 10]
goal_point = [90, 90]
# Mark start/goal points differently e.g., red/green circles
plt.figure(figsize=(7, 7))
plt.imshow(grid_map, cmap="binary")
for pt in [start_point, goal_point]:
circle_color = "r" if pt == start_point else "g"
circ = plt.Circle((pt[::-1]), radius=2, color=circle_color, fill=True)
ax = plt.gca()
ax.add_patch(circ)
plt.title('Start Point & Goal Point Visualization')
plt.axis("off")
plt.show()
```
阅读全文