Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.01.08;
Скачать: CL | DM;

Вниз

как правильно и быстро просканировать пиксели   Найти похожие ветки 

 
Electric   (2005-12-07 13:32) [0]

задача: есть картинка размером 320х240 точек. есть массив из "0" и "1", нужно просканировать каждую точку картинки и если точка имеет цвет clBlack то в массив в соответствии с позицией просканированной точки нужно записать "1". попробовал сделать так:
var
DecodedText: String;
PixelColor: TColor;
PixX, PixY: Integer;
hLCD: HDC;
begin
PixX:=0;
PixY:=0;
hLCD:=PaintBox1.Canvas.Handle;
repeat
 for PixX:=0 to 320 do
  begin
   PixelColor:=GetPixel(hLCD,PixX,PixY);
   if PixelColor=clBlack then DecodedText:=DecodedText+"1"
                         else DecodedText:=DecodedText+"0";
  end;
   PixY:=PixY+1;
until PixY=240;
Memo1.Lines.Text:=DecodedText;


результат получил, но очень долго всё это происходит. Как можно ускорить процесс?


 
File-Open   (2005-12-07 13:35) [1]

есть картинка размером 320х240

В каком формате?

P.S. А вообще - зачем это?...


 
Rem ©   (2005-12-07 13:53) [2]

Не мудрено, что медленно...

 if PixelColor=clBlack then DecodedText:=DecodedText+"1"
                        else DecodedText:=DecodedText+"0";


Из старых запасников:

procedure TViewForm.ApplyContrast;
var
 Val: byte;
 SrcBMP: TBitmap;
 DestBMP: TBitmap;
 SrcLn: PRGBArray;
 DestLn: PByteArray;
 x: integer;
 y: integer;
begin
 SrcBMP := SrcImage.Picture.Bitmap;
 DestBMP := BWImage.Picture.Bitmap;
 for y := 0 to SrcBMP.Height - 1 do
 begin
   SrcLn := SrcBMP.ScanLine[y];
   DestLn := DestBMP.ScanLine[y];
   {$RANGECHECKS OFF}
   for x := 0 to SrcBMP.Width - 1 do
   begin
     Val := (SrcLn^[x].R + SrcLn^[x].G + SrcLn^[x].B) div 3;
     DestLn^[x] := byte(Val < m_iContrast);
   end;
   {$RANGECHECKS ON}
 end;
end;


 
k2 ©   (2005-12-07 14:26) [3]

а ещё статья здесь есть http://www.delphimaster.ru/articles/pixels/index.html


 
Electric   (2005-12-07 15:36) [4]

Большое спасибо, буду пробовать.



Страницы: 1 вся ветка

Текущий архив: 2006.01.08;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
2-1135219098
Dyakon_Frost
2005-12-22 05:38
2006.01.08
Помогите решть задачку!


2-1134849282
pathfinder
2005-12-17 22:54
2006.01.08
Проблема с TThread...


14-1134464687
ZeroDivide
2005-12-13 12:04
2006.01.08
Исполение новогодних желаний


2-1135035793
kizam
2005-12-20 02:43
2006.01.08
картинка на RichEdit-e


2-1134909472
з. танька
2005-12-18 15:37
2006.01.08
выгрузить картинку из имаги