Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
💸 Как сделать бизнес проще, а карман толще?
Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое раписание, но и напоминать клиентам о визитах тоже.
Проблема в том, что средняя цена по рынку за такой сервис — 800 руб/мес или почти 15 000 руб за год. И это минимальный функционал.
Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.⚡️ Для новых пользователей первый месяц бесплатно. А далее 290 руб/мес, это в 3 раза дешевле аналогов. За эту цену доступен весь функционал: напоминание о визитах, чаевые, предоплаты, общение с клиентами, переносы записей и так далее. ✅ Уйма гибких настроек, которые помогут вам зарабатывать больше и забыть про чувство «что-то мне нужно было сделать». Сомневаетесь? нажмите на текст, запустите чат-бота и убедитесь во всем сами! Экранные формы. Рисунок 1 – Загрузка изображения ⇐ ПредыдущаяСтр 2 из 2
Рисунок 1 – Загрузка изображения
Рисунок 2 – Алгоритмы обнаружения границ на изображении (оператор Робертса, оператор Собела, разностный оператор) Листинг программы
unit Main; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus, ExtDlgs, ExtCtrls, Math, Child, ComCtrls; type TForm_Main = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N901: TMenuItem; N1801: TMenuItem; N2601: TMenuItem; N10: TMenuItem; Cascade1: TMenuItem; Tile1: TMenuItem; OpenPictureDialog1: TOpenPictureDialog; SavePictureDialog1: TSavePictureDialog; N11: TMenuItem; N12: TMenuItem; N13: TMenuItem; N14: TMenuItem; N15: TMenuItem; N16: TMenuItem; N17: TMenuItem; N18: TMenuItem; N19: TMenuItem; N20: TMenuItem; N21: TMenuItem; N22: TMenuItem; N23: TMenuItem; StatusBar1: TStatusBar; tuvtynfwbz1: TMenuItem; N24: TMenuItem; N25: TMenuItem; N26: TMenuItem; N27: TMenuItem; N28: TMenuItem; N29: TMenuItem; procedure N2Click(Sender: TObject); procedure N4Click(Sender: TObject); procedure Cascade1Click(Sender: TObject); procedure Tile1Click(Sender: TObject); procedure N7Click(Sender: TObject); procedure N8Click(Sender: TObject); procedure N901Click(Sender: TObject); procedure N1801Click(Sender: TObject); procedure N2601Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Gray(FCh, tCh: TForm_Child); procedure N12Click(Sender: TObject); procedure N15Click(Sender: TObject); procedure N16Click(Sender: TObject); procedure N19Click(Sender: TObject); procedure N20Click(Sender: TObject); procedure N21Click(Sender: TObject); procedure N22Click(Sender: TObject); procedure N23Click(Sender: TObject); procedure N24Click(Sender: TObject); procedure N25Click(Sender: TObject); procedure N27Click(Sender: TObject); procedure N28Click(Sender: TObject); procedure N29Click(Sender: TObject); private Mass: array [0..255] of integer; moda: integer; public end;
var Form_Main: TForm_Main; MyRect, MyRect2: TRect; implementation uses Gist; {$R *.dfm}
//открыть изображение procedure TForm_Main.N2Click(Sender: TObject); var FChild: TForm_Child; begin if (OpenPictureDialog1.Execute=true) and (FileExists(OpenPictureDialog1.FileName)=true) then begin FChild: =TForm_Child.Create(Application); FChild.Caption: =OpenPictureDialog1.FileName; FChild.Image1.Picture.Bitmap.LoadFromFile(OpenPictureDialog1.FileName); FChild.Image1.Width: =FChild.Image1.Picture.Bitmap.Width; FChild.Image1.Height: =FChild.Image1.Picture.Bitmap.Height; FChild.ClientWidth: =FChild.Image1.Picture.Bitmap.Width; FChild.ClientHeight: =FChild.Image1.Picture.Bitmap.Height; end; end;
//сохранить procedure TForm_Main.N3Click(Sender: TObject); var tempChild: TForm_Child; begin if (SavePictureDialog1.Execute=true) then begin tempChild: =Tform_Child(ActiveMDIChild); tempChild.Image1.Picture.Bitmap.SaveToFile(SavePictureDialog1.FileName+'.bmp'); end; end;
//преобразование в полутоновое procedure TForm_Main.Gray(FCh, tCh: TForm_Child); var i, j: integer; color: TColor; Gray: byte; begin for i: =0 to 255 do Mass[i]: =0;
for i: =0 to (tCh.Image1.Picture.Width-1) do for j: =0 to (tCh.Image1.Picture.Height-1) do begin color: =tCh.Image1.Canvas.Pixels[i, j]; Gray: =Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); FCh.Image1.Canvas.Pixels[i, j]: =RGB(Gray, Gray, Gray); Mass[Gray]: =Mass[Gray]+1; end; end;
//полутоновое procedure TForm_Main.N7Click(Sender: TObject); var FChild, tempChild: TForm_Child; begin if not (ActiveMDIChild=Nil) then begin if ActiveMDIChild is TForm_Child then begin tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Новое окно '+IntToStr(MDIChildCount); FChild.ClientHeight: =tempChild.ClientHeight; FChild.ClientWidth: =tempChild.ClientWidth; FChild.Image1.Width: =tempChild.Image1.Width; FChild.Image1.Height: =tempChild.Image1.Height; Gray(FChild, tempChild); end; end; end;
//вырезать procedure TForm_Main.N8Click(Sender: TObject); var FChild, tempChild: TForm_Child; sizeX, sizeY, sx1, sy1: integer; i, j: integer; LFrom, LTo: TColor; begin if not (ActiveMDIChild=Nil) then begin if ActiveMDIChild is TForm_Child then begin tempChild: =Tform_Child(ActiveMDIChild); if (StrToInt(tempChild.EditSelect.Text)=1) then begin FChild: =TForm_Child.Create(Application); FChild.Caption: ='Вырезано '+IntToStr(MDIChildCount); FChild.ClientHeight: =MyRect.Bottom-MyRect.Top; FChild.ClientWidth: =MyRect.Right-MyRect.Left; FChild.Image1.Width: =FChild.ClientWidth; FChild.Image1.Height: =FChild.ClientHeight; MyRect2: =Rect(0, 0, FChild.ClientWidth, FChild.ClientHeight); FChild.Image1.Canvas.CopyRect(MyRect2, tempChild.Image1.Canvas, MyRect); tempChild.Image1.canvas.Pen.Width: = 1; tempChild.Image1.canvas.Pen.Color: =clBlack; tempChild.Image1.canvas.Pen.Mode: = pmBlack; tempChild.Image1.canvas.Pen.Style: =psSolid; tempChild.Image1.canvas.Brush.Style: =bsSolid; tempChild.Image1.canvas.Brush.Color: =clBlack; tempChild.Image1.Canvas.Rectangle(x1, y1, lx, ly); end; end; end; end;
//поворот 90 procedure TForm_Main.N901Click(Sender: TObject); var FChild, tempChild: TForm_Child; sizeX, sizeY: integer; i, j: integer; begin if not (ActiveMDIChild=Nil) then begin if ActiveMDIChild is TForm_Child then begin tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Поворот '+IntToStr(MDIChildCount+1); FChild.ClientHeight: =tempChild.ClientWidth; FChild.ClientWidth: =tempChild.ClientHeight; FChild.Image1.Width: =tempChild.Image1.Height; FChild.Image1.Height: =tempChild.Image1.Width; end; for i: =0 to (tempChild.Image1.Picture.Width) do for j: =0 to (tempChild.Image1.Picture.Height) do FChild.Image1.Canvas.Pixels[FChild.Image1.Width-j, i]: =tempChild.Image1.Canvas.Pixels[i, j]; end; end;
//поворот 180 procedure TForm_Main.N1801Click(Sender: TObject); var FChild, tempChild: TForm_Child; sizeX, sizeY: integer; i, j: integer; begin if not (ActiveMDIChild=Nil) then begin if ActiveMDIChild is TForm_Child then begin tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Поворот '+IntToStr(MDIChildCount+1); FChild.ClientHeight: =tempChild.ClientHeight; FChild.ClientWidth: =tempChild.ClientWidth; FChild.Image1.Width: =tempChild.Image1.Width; FChild.Image1.Height: =tempChild.Image1.Height; end; for i: =0 to (tempChild.Image1.Picture.Width) do for j: =0 to (tempChild.Image1.Picture.Height) do FChild.Image1.Canvas.Pixels[FChild.Image1.Width-i, FChild.Image1.Height-j]: =tempChild.Image1.Canvas.Pixels[i, j]; end; end;
//поворот 270 procedure TForm_Main.N2601Click(Sender: TObject); var FChild, tempChild: TForm_Child; sizeX, sizeY: integer; i, j: integer; begin if not (ActiveMDIChild=Nil) then begin if ActiveMDIChild is TForm_Child then begin tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Поворот '+IntToStr(MDIChildCount); FChild.ClientHeight: =tempChild.ClientWidth; FChild.ClientWidth: =tempChild.ClientHeight; FChild.Image1.Width: =tempChild.Image1.Height; FChild.Image1.Height: =tempChild.Image1.Width; end; for i: =0 to (tempChild.Image1.Picture.Width) do for j: =0 to (tempChild.Image1.Picture.Height) do FChild.Image1.Canvas.Pixels[j, FChild.Image1.Height-i]: =tempChild.Image1.Canvas.Pixels[i, j]; end; end;
//закрыть все окна procedure TForm_Main.N4Click(Sender: TObject); var i: integer; begin for i: =0 to MDIChildCount-1 do MDIChildren[i].Close; end;
procedure TForm_Main.Button1Click(Sender: TObject); begin form_gist.Show; end;
procedure TForm_Main.Cascade1Click(Sender: TObject); begin Cascade; end;
procedure TForm_Main.Tile1Click(Sender: TObject); begin Tile; end;
//оператор Робертса procedure TForm_Main.N27Click(Sender: TObject); var i, j, k, l, temp, temp2: integer; color: TColor; maska, maska2: array [0..2, 0..2] of integer; FChild, tempChild: TForm_Child; begin maska[0, 0]: =0; maska[0, 1]: =0; maska[0, 2]: =0; maska[1, 0]: =0; maska[1, 1]: =1; maska[1, 2]: =0; maska[2, 0]: =0; maska[2, 1]: =0; maska[2, 2]: =-1;
maska2[0, 0]: =0; maska2[0, 1]: =0; maska2[0, 2]: =0; maska2[1, 0]: =0; maska2[1, 1]: =1; maska2[1, 2]: =0; maska2[2, 0]: =0; maska2[2, 1]: =0; maska2[2, 2]: =-1;
tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Оператор Робертса '+IntToStr(MDIChildCount); FChild.ClientHeight: =tempChild.ClientHeight; FChild.ClientWidth: =tempChild.ClientWidth; FChild.Image1.Width: =tempChild.Image1.Width; FChild.Image1.Height: =tempChild.Image1.Height; for i: =1 to (tempChild.Image1.Picture.Width-2) do for j: =1 to (tempChild.Image1.Picture.Height-2) do begin temp: =0; temp2: =0; for k: =0 to 2 do for l: =0 to 2 do begin color: =tempChild.Image1.Canvas.Pixels[i+k-1, j+l-1]; temp: =temp+maska[k, l]*Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); temp2: =temp2+maska2[l, k]*Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); end; temp: =round(temp/1); temp2: =round(temp2/1); temp: =round(sqrt(power(temp, 2)+power(temp2, 2))); FChild.Image1.Canvas.Pixels[i, j]: =RGB(255-temp, 255-temp, 255-temp); end; end;
//оператор Собела procedure TForm_Main.N28Click(Sender: TObject); var i, j, k, l, temp, temp2: integer; color: TColor; maska, maska2: array [0..2, 0..2] of integer; FChild, tempChild: TForm_Child; begin maska[0, 0]: =1; maska[0, 1]: =0; maska[0, 2]: =-1; maska[1, 0]: =2; maska[1, 1]: =0; maska[1, 2]: =-2; maska[2, 0]: =1; maska[2, 1]: =0; maska[2, 2]: =-1;
maska2[0, 0]: =-1; maska2[0, 1]: =-2; maska2[0, 2]: =-1; maska2[1, 0]: =0; maska2[1, 1]: =0; maska2[1, 2]: =0; maska2[2, 0]: =1; maska2[2, 1]: =2; maska2[2, 2]: =1;
tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Оператор Собела '+IntToStr(MDIChildCount); FChild.ClientHeight: =tempChild.ClientHeight; FChild.ClientWidth: =tempChild.ClientWidth; FChild.Image1.Width: =tempChild.Image1.Width; FChild.Image1.Height: =tempChild.Image1.Height; for i: =1 to (tempChild.Image1.Picture.Width-2) do for j: =1 to (tempChild.Image1.Picture.Height-2) do begin temp: =0; temp2: =0; for k: =0 to 2 do for l: =0 to 2 do begin color: =tempChild.Image1.Canvas.Pixels[i+k-1, j+l-1]; temp: =temp+maska[k, l]*Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); temp2: =temp2+maska2[l, k]*Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); end; temp: =round(temp/4); temp2: =round(temp2/4); temp: =round(sqrt(power(temp, 2)+power(temp2, 2))); FChild.Image1.Canvas.Pixels[i, j]: =RGB(255-temp, 255-temp, 255-temp); end; end;
//разностный оператор procedure TForm_Main.N29Click(Sender: TObject); var i, j, k, l, temp, temp2: integer; color: TColor; maska, maska2: array [0..2, 0..2] of integer; FChild, tempChild: TForm_Child; begin maska[0, 0]: =0; maska[0, 1]: =0; maska[0, 2]: =0; maska[1, 0]: =0; maska[1, 1]: =1; maska[1, 2]: =-1; maska[2, 0]: =0; maska[2, 1]: =1; maska[2, 2]: =-1;
maska2[0, 0]: =0; maska2[0, 1]: =0; maska2[0, 2]: =0; maska2[1, 0]: =0; maska2[1, 1]: =-1; maska2[1, 2]: =-1; maska2[2, 0]: =0; maska2[2, 1]: =1; maska2[2, 2]: =1;
tempChild: =Tform_Child(ActiveMDIChild); FChild: =TForm_Child.Create(Application); FChild.Caption: ='Разностный оператор '+IntToStr(MDIChildCount); FChild.ClientHeight: =tempChild.ClientHeight; FChild.ClientWidth: =tempChild.ClientWidth; FChild.Image1.Width: =tempChild.Image1.Width; FChild.Image1.Height: =tempChild.Image1.Height; for i: =1 to (tempChild.Image1.Picture.Width-2) do for j: =1 to (tempChild.Image1.Picture.Height-2) do begin temp: =0; temp2: =0; for k: =0 to 2 do for l: =0 to 2 do begin color: =tempChild.Image1.Canvas.Pixels[i+k-1, j+l-1]; temp: =temp+maska[k, l]*Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); temp2: =temp2+maska2[l, k]*Round((0.30*GetRValue(color))+(0.59*GetGValue(color))+(0.11*GetBValue(color))); end; temp: =round(temp/2); temp2: =round(temp2/2); temp: =round(sqrt(power(temp, 2)+power(temp2, 2))); FChild.Image1.Canvas.Pixels[i, j]: =RGB(255-temp, 255-temp, 255-temp); end;
end;
end.
|