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
3
A
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
Vous pouvez utiliser cv::countNonZero
et soustraire si votre image est noir et blanc.
Quelle serait une méthode pour le faire? – kman99
Utilisez-vous OpenCV2.0 (c'est-à-dire la classe 'Mat') ou une ancienne version (' IplImage * ',' CvArray * ', ..)? – Jacob
L'ancien IplImage * en utilisant 1.1 – kman99