Newsgroup: it.comp.lang.delphi
Titolo: confronto 2 TImage

Lo scopo e' confrontare due bitmap caricate (limitiamo per ora al 
formato Jpeg), 2 immagini possono essere uguali ma diverse solo
perche' di dimensioni (Hight e Width) alterate.
 
Chiaro se visivamente e' facile scoprirlo, ma prendiamo questo caso:
- Bitmap di partenza su path A
- ricerca di una Bitmap simile su path B (perche' ridimensionata,
rimominatata, etc).
 
Esiste qualche libreria per confornto Immagini Bitmap per XE e 
successivi o almeno per D2007.
 
questo es da Emabrcadero gia' fallirebbe il confronto
function GetPixelSize(informat: TPixelFormat): Integer;
   // returns proper byte size for input
   begin
     case informat of
       pf8bit: Result := 1;
       pf16bit: Result := 2;
       pf24bit: Result := 3;
       pf32bit: Result := 4;
     else
       Result := 0;
     end;
   end;
 
function MyBitmapsAreSame(Bitmap1, Bitmap2: TBitmap): Boolean;
var
   scanptr1, scanptr2: pointer;
   i: integer;
   PixelSize: byte;
begin
   Result := false;
   if (Bitmap1.Width = Bitmap2.Width) and
      (Bitmap1.Height = Bitmap2.Height) and
      (Bitmap1.PixelFormat = Bitmap2.PixelFormat) then
     begin
       PixelSize := GetPixelSize(Bitmap1.PixelFormat);
       for i := 0 to (Bitmap1.Height-1) do
         begin
           scanptr1 := Bitmap1.ScanLine[i];
           scanptr2 := Bitmap2.ScanLine[i];
           Result := CompareMem(scanptr1, scanptr2, 
Bitmap1.Width*PixelSize);
           if Result = false then break;
         end;
     end;
end;

> Lo scopo e' confrontare due bitmap caricate (limitiamo per ora al
cercando ho trovato questa libreria;
http://www.imageen.com/info/index.html
 
 
non mi resta che provare i vari demo.
 

 
http://www.imageen.com/info/index.html
 
 
Sì, purtroppo dubito che si possa fare con le librerie standard di Delphi, anche perché il tipo di comparazione delle immagini che stai cercando è molto particolare.
 
Però magari facci sapere come ti sei trovato con questa libreria, giusto perché in futuro può sempre servire... non si sa mai... :)
 
-- 
MARCO BREVEGLIERI (Software and Web Developer)
#Home: 
http://bit.ly/marcobreveglieri
 
#Blog: 
http://bit.ly/compilaquindiva
 

>
La libreria praticamente non si riesce a provare, mancando una versione 
Trial;
Sfruttando i demo, qualcosa si capisce comunque; hpo fatto delle prove
con la sezione *Image Analysis Demos* e sulle parti che potevano
interessare il riconoscimento di immagini
1 - ImageComp : date due immnagini vengono aperte in due aree diverse a 
livello singolo pixel
2 - ImageDiff : questa parte effettivamente confronta 2 immagini e 
restituisce in una finestra il risultato, una specie di negativo,
delle due immagini sovrapposte
3 - Compare : confronta 2 immagini
test 1: 1 aereo in volo ed 1 persona in piedi in abito da sposa;
risultano simili al 67%; (ma ci sono altri parametri da poter valutare)
test 2: 2 aerei diversi in volo nella stessa posizione, simili al 85%
test 3: 2 immagini identiche, corrispondenza del 100%
 
Difficile giudicare, senza avere possibilita' di provare i componenti;
ImageDiff e Compare che restituisce la % di similitudine, potrebbero 
davvero essere utili, per un confronto su n immagini.
Compare ritorna anche alcuni parametri sulle differenze riscontrate,
che fanno capire subito se due immagini sono simili o completamente diverse.
 

 successivi o almeno per D2007?
 
Forse ï¿œ il tipico cannone per uccidere una zanzara ma la prima cosa che 
m'ï¿œ venuta in mente sono le OpenCV.
 
http://stackoverflow.com/questions/18454498/delphi-compare-2-similar-images
 
 
-- 
@WarpTen10