type
Post
status
Published
date
May 1, 2026
slug
summary
开源A*算法
tags
category
技术分享
icon
password
工作太忙,也时隔好久没有更新,这几天刷到B站上一个A星算法,想起高一时的梦(学A*算法!当脚本大哥!当时也一直没有研究明白,今天借此机会再重新看看 哈哈哈哈哈)正好赶上五一假期,就看一下,顺便出此博客
作者:B站:落日飞车JinJi_
地址:https://github.com/kongkong985/Visual-Astar-Pathfinding-Tool/tree/main
📝 源码:
代码实现详解
主体代码实现功能
这个脚本:负责“显示、点击、调用、画图”
它做了 4 件事:
(1)读取地图图片
(2)把地图转换成“可通行 / 障碍”的二值图
(3)让你用鼠标点击起点和终点
(4)调用
astar1.method(...) 计算路径,并把路径画出来1、导入部分/
cv2:OpenCV,用来读图、显示图、画线、处理鼠标点击
astar1:你自己写的 A* 算法模块,真正负责“寻路”
2、读取两张图片
1.4.png:给 A* 算法用的“地图图”- 使用
地图a星_灰度二值化处理.py对1.3.png进行灰度处理和二值化,仅保留白色路径。 - 后续
OpenCV在读取1.4.png时,再将其转换为 A* 所需的二维数组binary_map。注意:它现在本身还是图片,不是数组。
1.3.png:给人看的“彩色显示图”
3、检查图片是否加载成功
如果
1.4.png没读到则img就是None。程序直接打印错误并退出。保存彩色原图,灰度化
把彩色图复制一份,保留下来。因为后面会不断在图上画点、画线。如果不复制原图,原图会被直接改掉。
把
1.4.png 转成灰度图。虽然 1.4.png 已经是黑白图,但 OpenCV 默认会以三通道(BGR)方式读取图像,因此仍需使用 cv2.cvtColor() 转换为单通道灰度图,才能进行后续的阈值处理。在 Python 的 OpenCV 中,图像的底层就是一个 NumPy 多维数组。对于单通道灰度图,它就是一个形状为
(height, width) 的 2D 数组。- 数组的行代表图像的
y坐标(高度)。
- 数组的列代表图像的
x坐标(宽度)。
- 数组里的每一个元素(值)就是一个像素点,值为
0~255(0是纯黑,255是纯白)。后续代码正是利用这个 2D 数组通过阈值处理生成了仅包含 0 和 1 的“寻路迷宫”。
生成二值地图
把显示图转换为三通道,方便查看以及标点进行寻路
- 作者:brown
- 链接:https://bbrownn.dpdns.org//article/353c0490-0e0e-8026-a25e-f63f0f8b8ff1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。






