Frage

hier ist mein Problem:

ich nach einer Möglichkeit, ein Bild in C ++ importieren dann seine Pixel durchqueren, einen Zähler jedes Mal ein Pixel einer bestimmten Farbe Inkrementieren gefunden wird.

Ich habe einige der Forschung getan, aber ich habe nichts besonders nützlich erwiesen. DevIL sieht aus wie eine gute Option, aber ich bin nicht sicher, wo ich anfangen soll.

Hier ist ein bisschen von C ++ / Python Pseudo-Code hoffentlich darstellt, was ich versuche zu tun:

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

Hat jemand ein paar Tipps, wo Sie anfangen sollen?

Danke

EDIT Einige zusätzliche Informationen: Ich verwende Windows 7 und alle Bilder sind .pngs

EDIT2 Ich habe alles Arbeits bekommt, außer tatsächlich die Farbe des aktuellen Pixels herauszufinden. Derzeit verwende ich diese:

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

Aber es funktioniert nicht, und ich habe keine Ahnung, wie es funktioniert. Ich habe nicht in der Lage gewesen, etwas darüber zu erfahren, dass ich verstehen konnte. Könnte jemand Punkt mich in die richtige Richtung, wie die RGB-Werte eines bestimmten Pixels zu finden?

Edit3 Erledigt! Für jeden, der diese eine ähnliche Sache, die meisten meiner noch offenen Fragen und ein gutes Stück Code versucht findet, kann zu tun gefunden werden hier . Danke für die Hilfe!

War es hilfreich?

Lösung

nehmen definiately einen Blick auf OpenCV , weil, wenn Sie anfangen, mehr Platz brauchen zu bewegen, dann wird OpenCV können Sie viel mehr Computer-Vision-Aufgaben zu tun. Und verwenden Sie boost :: filesystem tut die 'für jedes Bild in dir' Code.

Beachten Sie, dass die cv :: vergleichen grundsätzlich Funktion tut die Hälfte der Arbeit für Sie schon ... ich lasse Sie lesen, dass und genießen Sie die OpenCV-API nutzen.

Andere Tipps

Sie sollten einen Blick auf OpenCV nehmen.

Abhängig von der Plattform und Bildformat. In Windows werden BMP-Bilder unterstützt nativ (i. E. In der API). ImageMagick ist eine plattformübergreifende Bibliothek, ziemlich universell, dauert etwa jedes Format gibt, aber es ist schwer. Qt hat einige Bildverarbeitung als auch -. Beschränkt auf die gängigsten Formate

SDL hat einige nützliche Pixelmanipulation Zeug.

http://www.libsdl.org/

Es ist sehr sauber auch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top