OpenCV Grid Umgebung
-
06-07-2019 - |
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?
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