首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

(结贴率100%)如何获取这个图片下 黑白交界处的 XY坐标

2013-01-08 
(结贴率100%)怎么获取这个图片上 黑白交界处的 XY坐标?比如起点是图中蓝色的地方。然后我要获取一段(长度不

(结贴率100%)怎么获取这个图片上 黑白交界处的 XY坐标?
(结贴率100%)如何获取这个图片下 黑白交界处的 XY坐标

比如起点是图中蓝色的地方。
然后我要获取一段(长度不定的)黑白交接的坐标,图中我已经用红色线标记出来了。

请问如何用代码实现?获取红色这个路线的所有坐标?



求代码,或思路,谢谢。``````

UP有分   结贴率100%






Image1.canvas.Pixels[1,1]  这样就是获取1,1坐标的颜色是 黑色
[解决办法]
只能給你UP
[解决办法]
这是传奇,挖矿地图。。。

思路不是这样的,不知道你要这段距离做什么用

传奇不是求出所有可走图标才决定人物路线的,而是根据人物的方向,求出下一个坐标,判断是否可到达。
传奇中右上图的小地图就是黑白图,它就是用颜色来判断的,下一个坐标是黑色,那么就不可行走,白色就允许走

[解决办法]
迷宫的一种解法 就是贴墙走。
[解决办法]
有个笨办法,一个点一个点的取色,如果相领两点颜色不同(黑和白相邻),就存到一个数组中,不知道是否可行
[解决办法]
看看 图像学的 路径算法
估计也没人给你贴源码的
[解决办法]
建边缘检测器。。

轮廓处理的代码。
具体的你看下数字图像处理的书。 《Delphi数字图像处理及高级应用》
var
   b0, b1: Tbitmap;
   i, j: Integer;
   p1, p2, p3, p4: pbyteArray;
begin
   b0 := Tbitmap.Create;
   b1 := Tbitmap.Create;
   b0.Assign(Image1.Picture.Bitmap);
   b1.Assign(Image1.Picture.Bitmap);
   b0.PixelFormat := pf24bit;
   b1.PixelFormat := pf24bit;
   for i := 1 to b0.Height - 2 do
   begin
      p1 := b0.ScanLine[i - 1];
      p2 := b0.ScanLine[i];
      p3 := b0.ScanLine[i + 1];
      p4 := b1.ScanLine[i];
      for j := 1 to b0.Width - 2 do
      begin
         if (p2[3 * j + 2] = 0) and (p2[3 * j + 1] = 0) and (p2[3 * j] = 0) then
         begin

            if ((p2[3 * (j - 1) + 2] = 0) and (p2[3 * (j - 1) + 1] = 0) and
               (p2[3 * (j - 1)] = 0)) and
            ((p2[3 * (j + 1) + 2] = 0) and (p2[3 * (j + 1) + 1] = 0) and
               (p2[3 * (j + 1)] = 0)) and
            ((p1[3 * (j + 1) + 2] = 0) and (p1[3 * (j + 1) + 1] = 0) and
               (p1[3 * (j + 1)] = 0)) and
            ((p1[3 * (j) + 2] = 0) and (p1[3 * (j) + 1] = 0) and (p1[3 * (j)]


               = 0)) and
            ((p1[3 * (j - 1) + 2] = 0) and (p1[3 * (j - 1) + 1] = 0) and
               (p1[3 * (j - 1)] = 0)) and
            ((p3[3 * (j - 1) + 2] = 0) and (p3[3 * (j - 1) + 1] = 0) and
               (p3[3 * (j - 1)] = 0)) and
            ((p3[3 * (j) + 2] = 0) and (p3[3 * (j) + 1] = 0) and (p3[3 * (j)]
               = 0)) and
            ((p3[3 * (j + 1) + 2] = 0) and (p3[3 * (j + 1) + 1] = 0) and
               (p3[3 * (j + 1)] = 0)) then
            begin
               p4[3 * j + 2] := 255;
               p4[3 * j + 1] := 255;
               p4[3 * j] := 255;
            end;
         end;

      end;
      Image1.Picture.Bitmap.Assign(b1);
   end;
   b1.Free;
   b0.Free;

热点排行