Главная страница
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.018 c
2-1135109926
newhite
2005-12-20 23:18
2006.01.08
?


14-1134683046
Kerk
2005-12-16 00:44
2006.01.08
Знаменитый фильм с Тимошенко в главной роли :)


2-1134757985
dera
2005-12-16 21:33
2006.01.08
Как скрыть прогу в списке процессов (Win98)?


14-1133772225
Slider007
2005-12-05 11:43
2006.01.08
Задачка. Сижу парю мозги.


14-1134270358
Думкин(_врем)
2005-12-11 06:05
2006.01.08
МВо, с Днем рождения!