OpenCV Grid Area - PullRequest
       13

OpenCV Grid Area

3 голосов
/ 23 октября 2009

Я хочу найти небелую область изображения с камеры, используя OpenCV. Я уже могу найти круги, используя изображения с моей веб-камеры. Я хочу сделать сетку или что-то, чтобы я мог определить процент изображения не белый. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 23 октября 2009

Если вы хотите найти процент пикселей в вашем изображении, который не является белым, почему бы вам просто не подсчитать все пиксели, которые не являются белыми, и разделить его на общее количество пикселей в изображении?

Код в 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 голосов
/ 16 декабря 2011

Вы можете использовать cv::countNonZero и вычитать, если ваше изображение только черно-белое.

...