Frage

Ich möchte das nicht-weißen Bereich eines Bildes von einer Kamera mit OpenCV zu finden. Ich kann schon finden Kreise Bilder von meinem Web-Cam verwenden. Ich mag ein Gitter oder etwas machen, so dass ich die Prozent des Bildes bestimmen kann nicht weiß ist. Irgendwelche Ideen?

War es hilfreich?

Lösung

Wenn Sie den Prozentsatz der Pixel im Bild finden wollen, die nicht weiß ist, warum Sie nicht nur alle Pixel zählen, die nicht weiß sind und teilen sie durch die Gesamtzahl der Pixel im Bild?

Code in C

#include <stdio.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>

int main()
{
    // Acquire the image (I'm reading it from a file);
    IplImage* img = cvLoadImage("image.bmp",1);

    int i,j,k;
    // Variables to store image properties
    int height,width,step,channels;
    uchar *data;
    // Variables to store the number of white pixels and a flag
    int WhiteCount,bWhite;

    // Acquire image unfo
    height    = img->height;
    width     = img->width;
    step      = img->widthStep;
    channels  = img->nChannels;
    data      = (uchar *)img->imageData;

    // Begin
    WhiteCount = 0;
    for(i=0;i<height;i++) 
    {
      for(j=0;j<width;j++) 
      { // Go through each channel of the image (R,G, and B) to see if it's equal to 255
        bWhite = 0;
        for(k=0;k<channels;k++)
        {   // This checks if the pixel's kth channel is 255 - it can be faster.
            if (data[i*step+j*channels+k]==255) bWhite = 1;
            else 
            {
                bWhite = 0;
                break;
            }
        }
        if(bWhite == 1) WhiteCount++;
      }
    }       

    printf("Percentage: %f%%",100.0*WhiteCount/(height*width));

    return 0;
}

Andere Tipps

Sie können cv::countNonZero verwenden und subtrahieren, wenn das Bild nur schwarz und weiß ist.

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