delphi FMX图像简单的腐蚀和膨胀

2017-10-30 18:29:22来源:CSDN作者:qq_38204686人点击

分享
//排序 paixuprocedure paixu(var temp : array of Byte);var   i,j : Integer;   t : Byte;begin   for i := low(temp) to high(temp) do    for j := i to high(temp) do     if temp[i]<temp[j] then     begin       t := temp[i];       temp[i] := temp[j];       temp[j] := t;     end;end;//灰度图像的腐蚀 3x3procedure fushi(b : TBitmap);var   b_read : TBitmap;   x, y : Integer;   wdata , rdata : TBitmapData ;   p: PByteArray;   p1 , p2 , p3 : PByteArray;   temp : array [0..8] of Byte;begin   b_read := TBitmap.Create;   b_read.Assign(b);   //一个用来修改  w一个用来读取 r   if  b.Map( TMapAccess.Write,wdata) and b_read.Map( TMapAccess.Read,rdata) then   begin        for y := 1 to rdata.Height - 2 do        begin            p := wdata.GetScanline(y);            p1 := rdata.GetScanline(y-1);            p2 := rdata.GetScanline(y);            p3 := rdata.GetScanline(y+1);            for x := 1 to rdata.Width - 2 do            begin                temp[0] := p1[x*4-4];                temp[1] := p1[x*4];                temp[2] := p1[x*4+4];                temp[3] := p2[x*4-4];                temp[4] := p2[x*4];                temp[5] := p2[x*4+4];                temp[6] := p3[x*4-4];                temp[7] := p3[x*4];                temp[8] := p3[x*4+4];                //排序 mao                paixu(temp);                //赋值  f                p[x*4] := temp[8];                p[x*4+1] := p[x*4];                p[x*4+2] := p[x*4];                //不透明 b                p[x*4+3] := 255;            end;        end;        b.Unmap(wdata);        b_read.Unmap(rdata);   end;   b_read.Destroy;end;//灰度图像的膨胀 3x3procedure pengzhang(b : TBitmap);var   b_read : TBitmap;   x, y : Integer;   wdata , rdata : TBitmapData ;   p: PByteArray;   p1 , p2 , p3 : PByteArray;   temp : array [0..8] of Byte;begin   b_read := TBitmap.Create;   b_read.Assign(b);   //一个用来修改  w一个用来读取 r   if  b.Map( TMapAccess.Write,wdata) and b_read.Map( TMapAccess.Read,rdata) then   begin        for y := 1 to rdata.Height - 2 do        begin            p := wdata.GetScanline(y);            p1 := rdata.GetScanline(y-1);            p2 := rdata.GetScanline(y);            p3 := rdata.GetScanline(y+1);            for x := 1 to rdata.Width - 2 do            begin                temp[0] := p1[x*4-4];                temp[1] := p1[x*4];                temp[2] := p1[x*4+4];                temp[3] := p2[x*4-4];                temp[4] := p2[x*4];                temp[5] := p2[x*4+4];                temp[6] := p3[x*4-4];                temp[7] := p3[x*4];                temp[8] := p3[x*4+4];                //排序 mao                paixu(temp);                //赋值  f                p[x*4] := temp[0];                p[x*4+1] := p[x*4];                p[x*4+2] := p[x*4];                //不透明 b                p[x*4+3] := 255;            end;        end;        b.Unmap(wdata);        b_read.Unmap(rdata);   end;   b_read.Destroy;end;

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台