Гистограмма изображения

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Гистограмма изображения

Сообщение Atomi » 10.06.2021 18:21:31

Прошу помочь дописать код. В PaintBox после открытия изображения должна появляться гистограмма яркости цветов. Гистограмма должна вычисляться в массиве счетчиков, значения элементов которого - это пиксели изображения с соответствующей яркостью

Код: Выделить всё
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls,
  Buttons, ExtDlgs;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Image1: TImage;
    PaintBox1: TPaintBox;
    OpenPictureDialog1:TOpenPictureDialog;
    procedure Button1Click(Sender: TObject);

  private

  public

  end;

var
  Form1: TForm1;
   Color: TColor;
  R,G,B,q: Byte;
  x,y,k : Integer;
implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
If OpenPictureDialog1.Execute then Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

   k:=0;
       //Под яркостью пикселя будем понимать среднее значение его цветовых компонентов(R+G+B)div3.
for x:=0 to 100 do
for y:= 0 to 100 do begin
  q:=Image1.Picture.Bitmap.Canvas.Pixels[x,y];     // у меня только одно число а их должно быть R, G, B. не понимаю как их получить
  {Color:=Image1.Picture.Bitmap.Canvas.Pixels[x,y];
  R:= GetRValue(Color);
  G:= GetGValue(Color);
  B:= GetBValue(Color); }
  k:= k + q;           // числа суммирую для проверки
end;
Edit1.Text:= Inttostr(k);  //вывод для просмотра
end;


end.
Atomi
незнакомец
 
Сообщения: 1
Зарегистрирован: 10.06.2021 18:19:37

Re: Гистограмма изображения

Сообщение Vadim » 11.06.2021 02:56:14

А в чём конкретно проблема?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google Adsense [Bot] и гости: 26

Рейтинг@Mail.ru