2013-01-21 19 views
0

我想使用GPUImage框架的GPUImage3x3ConvolutionFilter,但不工作。帶GPUImage框架的卷積UIImage

這是我的代碼,我只得到一個白色的圖像。

- (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; 

回答

3

這是由於在框架的錯誤。卷積也被應用於圖像的alpha通道,這導致了[filter imageFromCurrentlyProcessedOutput]情況下的0 alpha通道值。我只是提交代碼來解決這個問題。

請注意,[stillImageSource imageFromCurrentlyProcessedOutput]什麼都不做,因爲您無法直接從相機輸入中獲取未處理的圖像。另外,我不會在這裏使用點符號,因爲-imageFromCurrentlyProcessedOutput不是GPUImageOutput的屬性。