5

静止画像のヒストグラムを生成したいことを除いて、この回答と非常によく似ています。

以下は私が行っていることであり、すべて0のデータを含むヒストグラムを示しています。これを機能させるためのトリックはありますか?

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

GPUImagePicture *original = [[[GPUImagePicture alloc] initWithImage:image] autorelease];

GPUImageGammaFilter *gammaFilter = [[GPUImageGammaFilter alloc] init];
[original 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)];

[original addTarget:blendFilter];
[histogramGraph addTarget:blendFilter];

[blendFilter addTarget:gpuImageView];

[original processImage];
4

1 に答える 1

0

Brad は、一部の内部メカニズムを GPUImage に変更して、メモリ管理を改善しました (実際にそうしています)。これで、フィルターに静止画像のフレームを保持するように指示する必要があります-useNextFrameForImageCapture

UIImage *inputImage = [UIImage imageNamed:@"Lambeau.jpg"];

GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];
GPUImageSepiaFilter *stillImageFilter = [[GPUImageSepiaFilter alloc] init];

[stillImageSource addTarget:stillImageFilter];
[stillImageFilter useNextFrameForImageCapture]
[stillImageSource processImage];

UIImage *currentFilteredVideoFrame = [stillImageFilter imageFromCurrentFramebuffer];
于 2014-04-28T08:19:01.460 に答える