2009-10-23 15 views
3

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

Répondre

4

Si vous voulez trouver le pourcentage de pixels dans votre image qui n'est pas blanc, pourquoi ne pas compter uniquement tous les pixels qui ne sont pas blancs et le diviser par le nombre total de pixels dans 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; 
} 
+0

Quelle serait une méthode pour le faire? – kman99

+0

Utilisez-vous OpenCV2.0 (c'est-à-dire la classe 'Mat') ou une ancienne version (' IplImage * ',' CvArray * ', ..)? – Jacob

+0

L'ancien IplImage * en utilisant 1.1 – kman99

0

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