Obtener el área ocupada por un determinado color en la pantalla - iOS

Estoy tratando de hacer algo similar a lo que se pide enesta pregunta, pero realmente no entiendo la respuesta dada a esa pregunta y no estoy seguro si es lo que necesito.

Lo que necesito es simple, aunque no estoy tan seguro de que sea fácil. Quiero calcular la cantidad de píxeles en la pantalla que son de un color determinado. Entiendo que cada 'píxel' que vemos es en realidad una combinación de píxeles de diferentes colores que parecen ser, por ejemplo, verdes. Así que lo que necesito es esoreal color- el que ve el usuario.

Por ejemplo, si he creado una vista UIV, establezca el color de fondo en[UIColor greenColor]y establezca sus dimensiones a la mitad del área de la pantalla (podemos suponer que la barra de estado está oculta por simplicidad y que estamos en un iPhone), esperaría que este "método mágico" devuelva 240 * 160 o 38,400- La mitad del área de la pantalla.

No espero que nadie escriba este 'método mágico', pero me gustaría saberlo.

a) Si esto es posible

b) Si es así, si se hace en tiempo casi real.

c) Si es así otra vez, por dónde empezar. He oído que se puede hacer con OpenGL, pero no tengo experiencia en esa área.

Aquí está mi solución, gracias a Radif Sharafullin:

int pixelsFromImage(UIImage *inImage) {
    CGSize s = inImage.size;
    const int width = s.width;
    const int height = s.height;
    unsigned char* pixelData = malloc(width * height);

    int pixels = 0;

    CGContextRef context = CGBitmapContextCreate(pixelData,
                                                  width,            
                                                  height,            
                                                  8,           
                                                  width,            
                                                  NULL,            
                                                  kCGImageAlphaOnly);

    CGContextClearRect(context, CGRectMake(0, 0, width, height));

    CGContextDrawImage(context, CGRectMake(0, 0, width, height), inImage.CGImage );

    CGContextRelease(context);

    for(int idx = 0; idx < width * height; ++idx) {
        if(pixelData[idx]) {
            ++pixels;
        }
    }

    free(pixelData);

    return pixels;
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta