How to create a histogram using iOS GPUImage?

While working on the https://github.com/luisespinoza/LEColorPicker project , I am trying to create a UIImage histogram from an arbitrary input UIImage using the GPUImage project (https://github.com/BradLarson/GPUImage).

The current code I'm using is the following:

- (NSDictionary*)dictionaryWithColorsPickedFromImage:(UIImage *)image
{
    GPUImageFilter *filter = [[GPUImageHistogramFilter alloc] initWithHistogramType:kGPUImageHistogramRGB];

    UIImage *filteredImage = [filter imageByFilteringImage:image];

    [UIImagePNGRepresentation(filteredImage) writeToFile:@"/Users/Luis/histogram.png" atomically:YES];

    return nil;
}

The problem is that histogram.png results in just a black line for each input image.

So, how will the correct code generate a UIImage histogram using iOS GPUImage?

+1
source share
1 answer

You can look at the FilterShowcase example to see how this should work in practice.

GPUImageHistogramFilter 256x3, ( 3 , ). R, G B 1 .

, GPUImageHistogramGenerator GPUImageHistogramFilter. GPUImageHistogramGenerator . -forceProcessingAtSize: GPUImageHistogramGenerator, .

, - GPUImageHistogramFilter. GPUImageHistogramFilter glReadPixels() , .

, FilterShowcase , :

        filter = [[GPUImageHistogramFilter alloc] initWithHistogramType:kGPUImageHistogramRGB];

        GPUImageGammaFilter *gammaFilter = [[GPUImageGammaFilter alloc] init];
        [videoCamera addTarget:gammaFilter];
        [gammaFilter addTarget:filter];

        GPUImageHistogramGenerator *histogramGraph = [[GPUImageHistogramGenerator alloc] init];

        [histogramGraph forceProcessingAtSize:CGSizeMake(256.0, 330.0)];
        [filter addTarget:histogramGraph];

        GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
        blendFilter.mix = 0.75;            
        [blendFilter forceProcessingAtSize:CGSizeMake(256.0, 330.0)];

        [videoCamera addTarget:blendFilter];
        [histogramGraph addTarget:blendFilter];

        [blendFilter addTarget:filterView];

.

+6

All Articles