0

我正在尝试使用 GPUImage 框架的 GPUImage3x3ConvolutionFilter 但无法正常工作。

这是我的代码,我只得到一个白色的图像。

- (UIImage *)convolution:(UIImage *)inputImage{

    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage];

    GPUImage3x3ConvolutionFilter *filter = [[GPUImage3x3ConvolutionFilter alloc] init];
    [filter setConvolutionKernel:(GPUMatrix3x3){
        {-1.0f,  0.0f, 1.0f},
        {-2.0f,  0.0f, 2.0f},
        {-1.0f,  0.0f, 1.0f}
    }];

    [stillImageSource addTarget:filter];
    [stillImageSource processImage];

    return stillImageSource.imageFromCurrentlyProcessedOutput;

}

我也在尝试改变:

return stillImageSource.imageFromCurrentlyProcessedOutput;

为了:

return filter.imageFromCurrentlyProcessedOutput;
4

1 回答 1

3

这是由于框架中的错误造成的。卷积也被应用于图像的 alpha 通道,在这种情况下导致 0 alpha 通道值[filter imageFromCurrentlyProcessedOutput]。我刚刚提交了代码来解决这个问题。

请注意,[stillImageSource imageFromCurrentlyProcessedOutput]它什么也不做,因为您无法直接从相机输入中获取未处理的图像。另外,我不会在这里使用点符号,因为-imageFromCurrentlyProcessedOutput它不是 GPUImageOutput 的属性。

于 2013-01-21T21:16:50.003 回答