Свертка UIImage с фреймворком GPUImage

Я пытаюсь использовать GPUImage3x3ConvolutionFilter инфраструктуры GPUImage, но не работает.

Это мой код, я получаю только белое изображение.

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

person Tony    schedule 21.01.2013    source источник


Ответы (1)


Это произошло из-за ошибки во фреймворке. Свертки также применялись к альфа-каналу изображения, что привело к значению альфа-канала 0 в случае [filter imageFromCurrentlyProcessedOutput]. Я просто написал код, чтобы исправить это.

Обратите внимание, что [stillImageSource imageFromCurrentlyProcessedOutput] ничего не делает, потому что вы не можете получить необработанные изображения прямо со входа камеры. Кроме того, я бы не стал использовать здесь точечную нотацию, потому что -imageFromCurrentlyProcessedOutput не является свойством GPUImageOutput.

person Brad Larson    schedule 21.01.2013