Question

Je souhaite trouver la zone non blanche d'une image provenant d'une caméra utilisant OpenCV. Je peux déjà trouver des cercles utilisant des images de ma webcam. Je veux faire une grille ou quelque chose afin que je puisse déterminer le pourcentage de l'image n'est pas blanche. Des idées?

Était-ce utile?

La solution

Si vous souhaitez trouver le pourcentage de pixels de votre image qui n'est pas blanc, pourquoi ne pas simplement compter tous les pixels qui ne sont pas blancs et le diviser par le nombre total de pixels de l'image?

Code en 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;
}

Autres conseils

Vous pouvez utiliser cv :: countNonZero et soustraire si votre image est uniquement en noir et blanc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top