网格图像值为2D数组

问题描述 投票:2回答:1

我有一个像下面的图像网格,我想以这种格式放入一个数组:

 ;x = wall(black cells and grey boxes), s= start (red circle), g = goal(blue circle), 0 = available path(everything else)
 $data[5][5] = [["x","x","x","x","x"], _
               ["x","s","0","x","x"], _
               ["x","x","0","x","x"], _
               ["x","x","0","g","x"], _
               ["x","x","x","x","x"]]

我以为我可以使用颜色,但我不知道如何。

arrays image image-processing grid autoit
1个回答
2
投票
  1. 看起来你有固定角度的视图 创建将屏幕位置转换为网格位置和返回的功能。它应该很容易只是2x线性插值。如果相机底板没有基于单元格的步骤,那么您需要网格线的角点并将其用作起点... 例如这样的东西(希望我正确测量像素): x = 236 + (+(u-uh)-(v-vh))*60; y = 133 + (-(u-uh)-(v-vh))*30; 60,30x,y的细胞大小 (236,133)是中间单位(uh,vh)的中心位置 uh,vh是中心单元网格中的坐标 将视图pan offset添加到(uv,hv)(236,133)现在只计算这个(u=?,v=?)的反向变换。不要忘记地图不是矩形!它是这样的: 0000x0000, 000xxx000, 00xxxxx00, 0xxxxxxx0, xxxxxxxxx, 0xxxxxxx0, 00xxxxx00, 000xxx000, 0000x0000,
  2. 创建一组可以遇到的所有对象的图像 这可以在运行时完成,每次没有找到匹配时将单元格添加到项目列表作为新对象类型。
  3. 循环遍历所有网格单元格位置并与对象类型进行比较 对于像素精确渲染图像,您可以直接比较像素1:1,如果不是这种情况,您需要更加健壮地比较对象。但是要制作有效的算法,我们需要查看您可以遇到的所有类型的对象,通常可以比较: 平均,最小和最大颜色,直方图, 纵横比,...... FFT / DCT 质心位置,密度等 不要忘记屏蔽与单元格区域的比较,只是不包括边界矩形角上的相邻单元格

[笔记]

没有进一步的信息,不能更具体

© www.soinside.com 2019 - 2024. All rights reserved.