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
 

📝 源码:

该源码存在三个部分

1、对地图进行灰度处理

2、A*寻路算法实现

3、主体功能实现

 
💡
有关Notion安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~

代码实现详解

主体代码实现功能

这个脚本:负责“显示、点击、调用、画图”
它做了 4 件事:
(1)读取地图图片
(2)把地图转换成“可通行 / 障碍”的二值图
(3)让你用鼠标点击起点和终点
(4)调用 astar1.method(...) 计算路径,并把路径画出来
1、导入部分/
  • cv2:OpenCV,用来读图、显示图、画线、处理鼠标点击
    • astar1:你自己写的 A* 算法模块,真正负责“寻路”
    2、读取两张图片
    • 1.4.png:给 A* 算法用的“地图图”
      • 使用 地图a星_灰度二值化处理.py1.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 的“寻路迷宫”。

    生成二值地图

    这句的作用是把灰度图变成一个二维数组。

    它的规则是:

    • 灰度值 大于 127 的像素 → 变成 0 = 可通行区域
    • 灰度值 小于等于 127 的像素 → 变成 1 = 障碍物
    这句话是用来显示用的。只保留 0(纯黑)255(纯白),从而生成一张高对比度的二值图,主要用于 UI 窗口的可视化展示,方便用户肉眼确认地图结构。

    把显示图转换为三通道,方便查看以及标点进行寻路

     
    【挺好看,暂时置顶】今日天空还挺好看关于mortex僵尸网络搭建
    Loading...