python - 我将如何从 2D 游戏图像创建布尔矩阵?
问题描述
这里展示的是 2D 游戏的屏幕截图:
您可以在草地、沥青、人行道等上行走,但不能走进建筑物/墙壁/任何结构。这是一个小 gif来演示这一点
我想要什么:我的理想目标是创建一个布尔矩阵,其中 0 表示您不能遍历该像素,而 1 表示可以。所以,在这个例子中,它看起来像这样(我忘了添加树)
该数组中的“红色区域”为 0,其他图块为 1
我尝试过的和我的想法:
我所有的想法都指向一件事,我不知道它是否正确:创建一个通用的“可接受”颜色列表,如果像素在可接受的颜色列表中,我们可以将其设置为 1。这当然有它的缺点:其中一个是不可穿越的区域很容易具有可穿越区域的颜色(例如,如果我们使用绿色作为草的颜色 - 可能是沼泽或灌木),另一个缺点是比较每个像素的计算时间。
我已经考虑过阈值,但如果我得到正确的,它只用于白色和黑色的比较。我还研究了使用 PIL 进行图像量化,但量化后的图像对我来说并没有太大变化。量化后我会做什么?
如果我们深入研究这个游戏,这里的图块被认为是 32x32 像素区域,它是使用图块集(类似于画布)绘制的: https : //i.imgur.com/j9CNQdi.png并且有一个“列表”不可穿越的“瓷砖(阻塞),也许它有可能使用它?
无论如何,我迷失在寻找什么。我一直在研究,但没有发现类似的东西。我会很感激任何关于在哪里看的建议,谢谢。
解决方案
推荐阅读
- elasticsearch - Elasticsearch:如何知道默认 9200 已在使用时使用的 HTTP 端口号
- php - 使用 Ajax 和 jQuery 自动填充多个文本字段
- javascript - 使用单个按钮单击-react 删除多个选中的项目
- angular - TypeError:无法读取 null 的属性“无效” - Angular Reactive Forms
- django-urls - 如何将元标题更改为富文本
- php - froala 所见即所得编辑器。我不能放php脚本
- reactjs - 如何在 withFormik 中的 handleSubmit 中调度事件
- c# - 连接条件中带有“或”的 Linq Lambda
- c# - 在 for 循环中迭代 EventLogEntryCollection 时出现 IndexOutOfRangeException
- docker - 无法使用 apache-php 启动 Docker 示例