Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 20

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    89

    C# riconoscere se un immagine è parte di un'altra immagine

    ho due immagini uguali, una la ritaglio e vorrei che il computer riconosca che l'immagine tagliata sia una parte di quell'altra immagine...
    ho realizzato questa funzione ma non capisco perchè non funziona...
    codice:
    public static bool ConfrontoImmagini(Bitmap imm1, Bitmap imm2) 
            {
    /*
    imm1 è l'immagine normale
    imm2 è l'immagine ritagliata
    */
                int w1 = imm1.Width, h1 = imm1.Height;
                int w2 = imm2.Width, h2 = imm2.Height;
    
    
                bool a = false;
                
                for (int wImm = 0; wImm != w1; wImm++) 
                {
                    for (int hImm = 0; hImm != h1; hImm++)
                    {
                        if ((w1 - wImm) - w2 >= 0 && (h1 - hImm) - h2 >= 0)
                        {
                            if (imm1.GetPixel(wImm, hImm) == imm2.GetPixel(0, 0))
                                for (int wImm2 = 0; wImm2 != w2; wImm2++)
                                {
                                    for (int hImm2 = 0; hImm2 != h2; hImm2++)
                                    {
                                        if (imm1.GetPixel(wImm + wImm2, hImm + hImm2) == imm2.GetPixel(wImm2, hImm2)) a = true;
                                        else { a = false; break; }
                                    }
                                    if (!a) break;
                                }
                        }
                        //else { wImm = w1; hImm = h1; }
                        if (a) break;
                    }
                    if (a) break;
                }
                return a;
            }
    Perchè non funziona?
    Grazie.

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    89
    Dovrebbe funzionare perchè sto realizzando un programma nel quale ho bisogno di fare questa determinata cosa ...
    Ma visto che non capisco perchè non funziona chiedo se qualcuno lo sa...

  4. #4
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da Mood98 Visualizza il messaggio
    Dovrebbe funzionare perchè sto realizzando un programma nel quale ho bisogno di fare questa determinata cosa
    Questa non è una risposta.
    Se tu non spieghi il PERCHE' quel codice dovrebbe funzionare, non si va da nessuna parte.
    Spiegare significa argomentare il tuo codice (che è diverso dal dire qual è l'obiettivo finale).

  5. #5
    Moderatore di Windows e software L'avatar di URANIO
    Registrato dal
    Dec 1999
    residenza
    Casalpusterlengo (LO)
    Messaggi
    1,255
    Non ha molto senso il tuo codice, ed è anche poco leggibile.

    A parte questo il tuo problema è molto più complesso.
    Domanda1: In che formato sono le immagini? jpg, bmp, o altro?
    Domanda2: il ritaglo può essere stato effettuato in ogni punto dell'immagine o solo in un punto preciso?

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    89
    1)Le immagini sono entrambe di formato .jpg
    2)Si il ritaglio può essere fatto in qualunque parte dell'immagine

    Quello che fa la funzione e di controllare tutti i colori dell'imm1 finché non trova lo stesso colore del primo punto dell'imm2, dopo di ché estrapolo la stessa dimensione dell'imm2 in imm1 e verifico se tutti colori sono uguali.

  7. #7
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    L'approccio non è corretto perché tu dai per scontato che il primo pixel di imm2 sia anche il primo di imm1, invece potrebbe anche non essere così.
    Riflettici...

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2016
    Messaggi
    89
    Scusa ma credo di non aver capito, perchè la funzione controlla tutti i colori dell'imm1 dall'alto verso il basso e qualora trova il colore uguale al primo pixel di imm2 verifica se i prossimi colori di grandezza uguale a imm2 sono uguali...

  9. #9
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da Mood98 Visualizza il messaggio
    Scusa ma credo di non aver capito
    Capisco che tu possa non aver capito. Per questo ti ho suggerito di rifletterci.

    Tutto può dipendere da QUALE porzione viene ritagliata, rispetto all'immagine intera.

    Esempio pratico, ecco un'immagine:

    ssWSX5Evo01.png

    Se un utente 'ritaglia' il SECONDO riquadro rosso (pulsante COPIA), la tua routine troverà il PRIMO pixel rosso (pulsante incolla) ed inizierà il confronto da quello. Ovviamente il confronto fallirà.
    Questo, stando alla descrizione che hai dato della tua funzione.

  10. #10
    Utente di HTML.it L'avatar di patel
    Registrato dal
    Jan 2008
    Messaggi
    1,994
    Quote Originariamente inviata da Mood98 Visualizza il messaggio
    ho realizzato questa funzione ma non capisco perchè non funziona...
    se l'hai realizzata tu spiegacela commentandola

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.