![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А вы не могли бы мне подсказать как сравнить по пикселам два ч/б [D5, D6, D7]
DoktorX © (2006-11-14 23:13:00)А вы не могли бы мне подсказать как сравнить по пикселам два ч/б битмапа
рамерностью 30Х30 пикселов?
RASkov (2006-11-15 13:17:00) [1]> Автор, попробуй так и сделай выводы, я просто чуть-чуть подправил твой код, на самом деле здесь много чего переделать можно.
procedure TForm1.Button3Click(Sender: TObject);
var
Count, x, y, i, Result, chislo: Integer;
begin
chislo:= -1;
for i:=0 to ImageList1.Count-1 do begin
ImageList1.GetBitmap(i, Image4.Picture.Bitmap);
Count := 0;
for x := 0 to Image4.Picture.Bitmap.Width-1 do
for y := 0 to Image4.Picture.Bitmap.Height-1 do begin
if (Image3.Canvas.Pixels[x,y] = clblack) and (Image4.Canvas.Pixels[x,y] = clblack)
then Inc(Count);
Result:=(Count div 10);
if (Result > 20) then chislo:= i;
end;
* Image4.Repaint;
Label4.Caption:= inttostr(chislo);
* Application.ProcessMessages;
end;
end;
* - можно убрать. (быстрее будет)
ЗЫ chislo всегда будет нарастающим(я думаю смысл понятен) Вместо временного битмапа лучше временно хранить Result максимальный.
RASkov (2006-11-15 12:38:00) [2]или не нужен временный битмап
RASkov (2006-11-15 12:37:00) [3]> [25] Johnmen © (15.11.06 09:55)
>и вводить людей в заблуждение.
Так на оборот же хочу чела вывести из него. В чем бред? У него идет перебор всех картинок из ImigaList и далее приравнивание к Image4 который в свою очередь попиксельно сравнивается с Image3. Т.е. здесь получается промежуточный Image4 и ненужен вовсе.
Johnmen (2006-11-15 09:55:00) [4]
> RASkov (15.11.06 04:11) [24]
Не стОит давать бредовые советы и вводить людей в заблуждение.
RASkov (2006-11-15 04:11:00) [5]А по твоему приведенному "куску кода" можно и так сделать
ImageList1.GetBitmap(i, Image4.Picture.Bitmap);
А то у тебя i раз создается bm, а уничтожается один раз. Т.е. bm тебе вообще не надо.
Или один раз создай bm до циклов и нафик не нужен Image4. После циклов finallybm.Free;
RASkov (2006-11-15 03:54:00) [6]> for x := 0 to Width-1 do
> for y := 0 to Height-1 do
У тебя здесь все верно? точно?
Вставь перед ними:
ShowMessage(IntToStr(Width)+' - '+IntToStr(Image4.Picture.Bitmap.Width));
>Image4.Picture.Bitmap:=bm;
Лучше так Image4.Picture.Bitmap.Assign(bm);
Anatoly Podgoretsky (2006-11-15 00:27:00) [7]> MikePetrichenko (15.11.2006 0:22:21) [21]
Приятно встретить знающего человека
MikePetrichenko (2006-11-15 00:22:00) [8]
> Может тебе и пальцы загибать
Агаа!
DoktorX (2006-11-15 00:19:00) [9](Image4.Canvas.Pixels[x,y] = clblack)
а если вместо етого поставить
(bm[i].Canvas.Pixels[x,y] = clblack)
Anatoly Podgoretsky (2006-11-15 00:18:00) [10]> DoktorX (15.11.2006 0:16:17) [17]
Может тебе и пальцы загибать
Johnmen (2006-11-15 00:18:00) [11]
> задайте мне вопрос
Пожалуйста - [4]
DoktorX (2006-11-15 00:16:00) [12]задайте мне вопрос
Johnmen (2006-11-15 00:14:00) [13]
> вы мне не отказываетесь помочь? какие же вы спецы??????
Как можно помочь, если ты не отвечаешь на уточняющие вопросы?
А спецы мы самые спецовые из всех спецов.
Anatoly Podgoretsky (2006-11-15 00:13:00) [14]Напрашиваешься, а у нас в этом случае не церемонятся.
DoktorX (2006-11-15 00:09:00) [15]вы мне не отказываетесь помочь? какие же вы спецы??????
DoktorX (2006-11-14 23:56:00) [16]Удалено модератором
Ketmar (2006-11-14 23:43:00) [17]опять он...
Johnmen (2006-11-14 23:34:00) [18]Кстати, в [2] ещё и утечки будут. Т.к. Free не там.
Anatoly Podgoretsky (2006-11-14 23:29:00) [19]> DoktorX (14.11.2006 23:28:09) [9]
А теперь внимательно прочитай вопрос, и подумай о наших телепатических способностях
DoktorX (2006-11-14 23:28:00) [20]так мне и надо по кол совпавших чёрных точек отобразить наилучший шаблон