Delphi 图像二值化


本文整理自网络,侵删。

 

uses

  Vcl.Imaging.pngimage, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,

  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls,

  Vcl.ExtCtrls, Vcl.ComCtrls;

  

procedure TForm1.btn_erzhihuaClick(Sender: TObject);

var

  p: PByteArray;

  Gray, x, y: Integer;

  Bmp: TBitmap;

begin

 

  Bmp := TBitmap.Create;

  Bmp.Assign(img1.Picture.Bitmap);

    //设置为24位真彩色

  Bmp.PixelFormat := pf24Bit;

  randomize;

 

  for y := 0 to Bmp.Height - 1 do

  begin

    p := Bmp.scanline[y];

    for x := 0 to Bmp.Width - 1 do

    begin

 

      //一个象素点三个字节

      Gray := Round(p[x * 3 + 2] * 0.3 + p[x * 3 + 1] * 0.59 + p[x * 3] * 0.11);

      if Gray > 120 then //全局阀值128

      begin

        p[x * 3] := 255;

        p[x * 3 + 1] := 255;

        p[x * 3 + 2] := 255;

      end

      else

      begin

        p[x * 3] := 0;

        p[x * 3 + 1] := 0;

        p[x * 3 + 2] := 0;

      end;

    end;

  end;

  ClearPicNoise(Bmp, 2);

  img2.Picture.Bitmap.Assign(Bmp);

  Bmp.Free;

end;

来源:http://www.coder163.com/language/delphi/

相关阅读 >>

Delphi 使用tarray.sort对数组排序

Delphi截图程序无窗口版

Delphi android 拨打电话

Delphi7判断字符是否是数字

Delphi的获取某坐标的颜色值

Delphi 将自己的app.ico应用程序图表添加到dephi资源文件res中

Delphi-idhttp-utf-8编码乱码解决

Delphi实现win10下Delphi 10.3.1 inline hook 调试器法获取寄存器并修改

Delphi测试数据库连接时间

Delphi一个基于wininet的http操作小函数

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...