Domanda

ecco il mio problema:

Sto cercando un modo per importare un'immagine in C ++ e poi attraversano i suoi pixel, incrementando un contatore ogni volta che viene trovato un pixel di un certo colore.

ho fatto qualche ricerca, ma non ho trovato nulla di particolarmente utile. Devil appare come una buona opzione, ma non sono sicuro da dove cominciare.

Ecco un po 'di C ++ / python pseudo-codice si spera che illustra quello che sto cercando di fare:

for image in folder:

    A = 0;
    B = 0;

    for pixel in image:

        if (pixel == colourA) {A++}
        if (pixel == colourB) {B++}

    //Output the count of colours for each image
    outputToFile(A, B);

Qualcuno ha alcuni suggerimenti su dove cominciare?

Grazie

EDIT Alcune informazioni in più: sto usando Windows 7 e tutte le immagini sono .pngs

EDIT2 Ho tutto di lavoro, tranne che in realtà scoprire il colore del pixel corrente. Attualmente sto usando questo:

int blue = ((uchar *)(img->imageData + pixelX*img->widthStep))[pixelY*img->nChannels + 0];

Ma non funziona, e non ho idea di come funziona. Non sono stato in grado di trovare nulla di questo che ho potuto capire. Qualcuno potrebbe punto me nella giusta direzione su come trovare i valori RGB di un certo pixel?

Edit3 Fatto! Per tutti coloro che trova questo cercando di fare una cosa simile, la maggior parte delle mie domande rimaste e un bel po 'di codice può essere trovato qui . Grazie per l'aiuto!

È stato utile?

Soluzione

definiately dare un'occhiata al OpenCV perché quando si inizia ad avere bisogno di più spazio per spostare poi OpenCV ti consente di fare molte attività di visione del computer più. E utilizzare boost :: filesystem per fare la 'di ogni immagine in dir' codice.

Si noti che il cv :: confrontare funzione fondamentalmente fa metà del lavoro per voi già ... ti lascio avete letto e godere sfruttando l'API OpenCV.

Altri suggerimenti

Si dovrebbe dare un'occhiata a OpenCV.

Dipende piattaforma e formato immagine. In Windows, le immagini BMP sono supportati in modo nativo (i. E. Nell'API). ImageMagick è una libreria multi-piattaforma, piuttosto universale, dura circa qualsiasi formato là fuori, ma è pesante. Qt ha qualche elaborazione delle immagini, come pure -. Limitato ai formati più comuni

SDL ha alcune cose utili manipolazione dei pixel.

http://www.libsdl.org/

E 'molto pulito pure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top