GPUImage 平均颜色与应用的灰度过滤器不匹配
GPUImage average colour doesn't match to applied grayscale filter
我在使用 GPUImage 时遇到以下问题:
1st 我在相机上添加了一个灰度滤镜,然后我使用 GPUImageAverageColor
来获得平均颜色。问题是我通过块获得的颜色不在灰度范围内。我做错了什么?
这是代码:
GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
GPUImageView *filterView = (GPUImageView *)self.cameraLayer;
[filterView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill];
GPUImageGrayscaleFilter *grayscaleFilter = [[GPUImageGrayscaleFilter alloc] init];
[videoCamera addTarget:grayscaleFilter];
[grayscaleFilter addTarget:filterView];
GPUImageAverageColor *averageColor = [[GPUImageAverageColor alloc] init];
[averageColor setColorAverageProcessingFinishedBlock:^(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime){
NSLog(@"Red: %f, green: %f, blue: %f, alpha: %f", redComponent, greenComponent, blueComponent, alphaComponent);
}];
[videoCamera addTarget:averageColor];
[videoCamera startCameraCapture];
那是因为您实际上 运行 不是灰度输出的平均颜色操作。
看看您是如何定位过滤器的。您将摄像机的输出直接发送到您的平均色彩操作。您需要改为将灰度滤镜的输出发送到平均颜色操作。
我在使用 GPUImage 时遇到以下问题:
1st 我在相机上添加了一个灰度滤镜,然后我使用 GPUImageAverageColor
来获得平均颜色。问题是我通过块获得的颜色不在灰度范围内。我做错了什么?
这是代码:
GPUImageVideoCamera *videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack];
videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
GPUImageView *filterView = (GPUImageView *)self.cameraLayer;
[filterView setFillMode:kGPUImageFillModePreserveAspectRatioAndFill];
GPUImageGrayscaleFilter *grayscaleFilter = [[GPUImageGrayscaleFilter alloc] init];
[videoCamera addTarget:grayscaleFilter];
[grayscaleFilter addTarget:filterView];
GPUImageAverageColor *averageColor = [[GPUImageAverageColor alloc] init];
[averageColor setColorAverageProcessingFinishedBlock:^(CGFloat redComponent, CGFloat greenComponent, CGFloat blueComponent, CGFloat alphaComponent, CMTime frameTime){
NSLog(@"Red: %f, green: %f, blue: %f, alpha: %f", redComponent, greenComponent, blueComponent, alphaComponent);
}];
[videoCamera addTarget:averageColor];
[videoCamera startCameraCapture];
那是因为您实际上 运行 不是灰度输出的平均颜色操作。
看看您是如何定位过滤器的。您将摄像机的输出直接发送到您的平均色彩操作。您需要改为将灰度滤镜的输出发送到平均颜色操作。