Главная страница
    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.45 MB
Время: 0.008 c
2-1135053938
Officeman
2005-12-20 07:45
2006.01.08
Приложение для КПК


14-1134573036
lookin
2005-12-14 18:10
2006.01.08
Вес электрона


2-1135177348
з. танька
2005-12-21 18:02
2006.01.08
отображение формул


2-1135082307
ZbarKiy
2005-12-20 15:38
2006.01.08
RGB ?


2-1134676315
Чакуока
2005-12-15 22:51
2006.01.08
Переход на Delphi7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский