Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Вниз

А вы не могли бы мне подсказать как сравнить по пикселам два ч/б   Найти похожие ветки 

 
DoktorX   (2006-11-14 23:13) [0]

А вы не могли бы мне подсказать как сравнить по пикселам два ч/б битмапа
рамерностью 30Х30 пикселов?


 
Джо ©   (2006-11-14 23:13) [1]

Думаю, могли бы. А в чем загвоздка?


 
DoktorX   (2006-11-14 23:15) [2]

Я чото сделал но оно не работает!

procedure TForm1.Button3Click(Sender: TObject);

var
Count,x,y,i,Result,chislo:integer;

bm:TBitmap;
begin
 for i:=0 to 5 do
 begin
bm:=TBitmap.Create;
ImageList1.GetBitmap(i,bm);
Image4.Picture.Bitmap:=bm;
Count := 0;
for x := 0 to Width-1 do
for y := 0 to Height-1 do
 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;
label4.Caption:= inttostr(chislo);
end;
bm.Free;
end;


 
Johnmen ©   (2006-11-14 23:16) [3]

ImageX.Canvas.Pixels[X,Y] <> ImageY.Canvas.Pixels[X,Y]

Это последний раз. Учи матчасть.


 
Johnmen ©   (2006-11-14 23:17) [4]


> но оно не работает!


С чего ты взял?


 
DoktorX   (2006-11-14 23:18) [5]

а как с imagelist перебрать бм и сравнить?


 
MikePetrichenko ©   (2006-11-14 23:20) [6]


> Я чото сделал но оно не работает!

Сначала определись ЧТО сделал.


 
Johnmen ©   (2006-11-14 23:23) [7]


> а как с imagelist перебрать бм и сравнить?


Здесь дело такое, что на вопросы типа "дайте сырцов" отвечать не принято.


 
Anatoly Podgoretsky ©   (2006-11-14 23:24) [8]


> С чего ты взял?

По вопросу работает, а по приведеным им коду не работает, поскольку вопрос к коду отношения не имеет, в коде он считает количество совпадающих черных точек


 
DoktorX   (2006-11-14 23:28) [9]

так мне и надо по кол совпавших чёрных точек отобразить наилучший шаблон


 
Anatoly Podgoretsky ©   (2006-11-14 23:29) [10]

> DoktorX  (14.11.2006 23:28:09)  [9]

А теперь внимательно прочитай вопрос, и подумай о наших телепатических способностях


 
Johnmen ©   (2006-11-14 23:34) [11]

Кстати, в [2] ещё и утечки будут. Т.к. Free не там.


 
Ketmar ©   (2006-11-14 23:43) [12]

опять он...


 
DoktorX   (2006-11-14 23:56) [13]

Удалено модератором


 
DoktorX   (2006-11-15 00:09) [14]

вы мне не отказываетесь помочь? какие же вы спецы??????


 
Anatoly Podgoretsky ©   (2006-11-15 00:13) [15]

Напрашиваешься, а у нас в этом случае не церемонятся.


 
Johnmen ©   (2006-11-15 00:14) [16]


> вы мне не отказываетесь помочь? какие же вы спецы??????


Как можно помочь, если ты не отвечаешь на уточняющие вопросы?
А спецы мы самые спецовые из всех спецов.


 
DoktorX   (2006-11-15 00:16) [17]

задайте мне вопрос


 
Johnmen ©   (2006-11-15 00:18) [18]


> задайте мне вопрос


Пожалуйста - [4]


 
Anatoly Podgoretsky ©   (2006-11-15 00:18) [19]

> DoktorX  (15.11.2006 0:16:17)  [17]

Может тебе и пальцы загибать


 
DoktorX   (2006-11-15 00:19) [20]

(Image4.Canvas.Pixels[x,y] = clblack)
а если вместо етого поставить
(bm[i].Canvas.Pixels[x,y] = clblack)


 
MikePetrichenko ©   (2006-11-15 00:22) [21]


> Может тебе и пальцы загибать

Агаа!


 
Anatoly Podgoretsky ©   (2006-11-15 00:27) [22]

> MikePetrichenko  (15.11.2006 0:22:21)  [21]

Приятно встретить знающего человека


 
RASkov   (2006-11-15 03:54) [23]

> 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);


 
RASkov   (2006-11-15 04:11) [24]

А по твоему приведенному "куску кода" можно и так сделать
ImageList1.GetBitmap(i, Image4.Picture.Bitmap);
А то у тебя i раз создается bm, а уничтожается один раз. Т.е. bm тебе вообще не надо.
Или один раз создай bm до циклов и нафик не нужен Image4. После циклов finally bm.Free;


 
Johnmen ©   (2006-11-15 09:55) [25]


> RASkov   (15.11.06 04:11) [24]


Не стОит давать бредовые советы и вводить людей в заблуждение.


 
RASkov   (2006-11-15 12:37) [26]

> [25] Johnmen ©   (15.11.06 09:55)
>и вводить людей в заблуждение.

Так на оборот же хочу чела вывести из него. В чем бред? У него идет перебор всех картинок из ImigaList и далее приравнивание к Image4 который в свою очередь попиксельно сравнивается с Image3. Т.е. здесь получается промежуточный Image4 и ненужен вовсе.


 
RASkov   (2006-11-15 12:38) [27]

или не нужен временный битмап


 
RASkov   (2006-11-15 13:17) [28]

> Автор, попробуй так и сделай выводы, я просто чуть-чуть подправил твой код, на самом деле здесь много чего переделать можно.
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 максимальный.



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

Форум: "Начинающим";
Текущий архив: 2006.12.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.044 c
2-1163581261
pavel_guzhanov
2006-11-15 12:01
2006.12.03
Интересное поведение функции Length()


15-1163507336
alles
2006-11-14 15:28
2006.12.03
ActiveX в browser


15-1163538319
i-s-v
2006-11-15 00:05
2006.12.03
Вода на марсе может быть!!


2-1163334091
AlexanderMS
2006-11-12 15:21
2006.12.03
Прокрутить Memo и установить курсор.


15-1163485098
Denniz
2006-11-14 09:18
2006.12.03
Синяя панель Windows Explorer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский