zoukankan      html  css  js  c++  java
  • 图像的柔化处理

    基本原理:

      以一个像素点为中心,取一个3*3大小的区域,以该区域中9个像素点的颜色平均值为该中心像素点着色

    实例:


    var
      Form17: TForm17;
      Map1:TBitmap;

    implementation

    {$R *.dfm}procedure TForm17.FormCreate(Sender: TObject);
    begin
     // Lb_R.Caption:='';

     OpenDialog1.DefaultExt:=GraphicExtension(TBitmap);
     OpenDialog1.Filter:=GraphicFilter(TBitmap);
     if OpenDialog1.Execute then
     begin
      Map1:=TBitmap.Create;
      Map1.LoadFromFile(OpenDialog1.FileName);
      Image1.Picture.Bitmap:=Map1;

     end;

    end;

    procedure TForm17.Button1Click(Sender: TObject);
    var
      xmax,ymax,i,j,m,n:integer;
      r,g,b:integer;
      temp:TColor;
    begin
      xmax:=Image1.Picture.Bitmap.Width-1;
      ymax:=Image1.Picture.Bitmap.Height-1;
      Label1.Caption:='柔化处理中,请稍后...';
      Form17.Refresh;

      ProgressBar1.Min:=0;
      ProgressBar1.Max:=xmax;
      ProgressBar1.Position:=0;
      ProgressBar1.Step:=1;
      Form17.Refresh;

      for i:=1 to xmax-1 do
      begin
        ProgressBar1.StepIt;
        for j:=1 to ymax-1 do
        begin
          r:=0;
          g:=0;
          b:=0;
            for m:=i-1 to i+1 do
              for n:=j-1 to j+1 do
            begin
              r:=r+GetRValue(Image1.Canvas.Pixels[m,n]);
              g:=g+GetGValue(Image1.Canvas.Pixels[m,n]);
              b:=b+GetBValue(Image1.Canvas.Pixels[m,n]);

            end;
          r:=r div 9;
          g:=g div 9;
          b:=b div 9;
          Image1.Canvas.Pixels[i,j]:=RGB(r,g,b);

        end;
      end;
      Image1.Refresh;
      Label1.Caption:='柔化处理完成...';

    end;

  • 相关阅读:
    回顾python,就当做笔记了
    测试知识回顾
    转发 Python接口自动化
    性能测试脚本调优
    java
    新的一年,希望自己有所提升,在这简单的记录,自己的学习。
    navicat 连接 mysql 出现Client does not support authentication protocol requested by server解决方案
    tomcat context配置
    tomcat host 配置
    flyway使用
  • 原文地址:https://www.cnblogs.com/huking/p/1704971.html
Copyright © 2011-2022 走看看