2013-08-31 1 views
1

Я хотел бы создать GPUImageView, чтобы отобразить фильтр в режиме реального времени (в отличии от продолжать читать imageFromCurrentlyProcessedOutput)GPUImage GPUImageChromaKeyBlendFilter С Still Image

Можно ли использовать GPUImageChromaKeyBlendFilter GPUImage с неподвижным изображением источника автоматически обновляет GPUImageView ?

Вот мой код, читающий это в UIImage;

UIImage *inputImage = [UIImage imageNamed:@"1.JPG"]; 
    UIImage *backgroundImage = [UIImage imageNamed:@"2.JPG"]; 

    GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:inputImage]; 
    GPUImageChromaKeyBlendFilter *stillImageFilter = [[GPUImageChromaKeyBlendFilter alloc] init]; 
    [stillImageFilter setThresholdSensitivity:0.5]; 
    [stillImageFilter setColorToReplaceRed:0.0 green:1.0 blue:0.0]; 


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


    UIImage *currentFilteredVideoFrame = [stillImageFilter imageByFilteringImage: backgroundImage ]; 

Все, что я пытался до сих пор требует от вас, чтобы добавить «BackgroundImage» в качестве мишени для фильтра (как если бы вы использовали StillCamera). Если вы добавите backgroundImage в качестве цели, GPUImage просто использует эти новые изображения в качестве базового изображения.

Может ли кто-нибудь помочь?

Спасибо,

+0

Можете ли вы сказать мне свое решение, пожалуйста? –

ответ

2

Не используйте -imageByFilteringImage: с двумя входами фильтром, как смесь. Это удобный способ быстро настроить небольшую цепочку фильтров на основе UIImage и захватить UIImage. Во всяком случае, вы не захотите этого для чего-то, нацеленного на GPUImageView.

Для сочетания цветных клавиш вам необходимо настроить таргетинг на входное изображение (тот, который будет заменен на цвет), и фоновое изображение в соответствии с этим порядком, используя -addTarget, с экземплярами GPUImagePicture для обоих. Затем вы нацеливаете свою смесь на GPUImageView.

Обратите внимание, что после этого вы должны будете поддерживать надежные ссылки на свой GPUImagePictures, если вы хотите продолжать обновление фильтра после этой точки, поэтому вам может понадобиться сделать их переменными экземпляра в вашем классе контроллера.

Как только вы настроите это таким образом, результат пойдет в ваш GPUImageView. Каждый раз, когда вы вызываете -processImage на одном из двух изображений, дисплей в вашем GPUImageView будет обновлен. Поэтому вы можете вызывать это после каждого изменения настроек фильтра, например, если у вас есть ползунок для обновления значений фильтра, и изображение будет обновляться в реальном времени.

+0

Perfect. Я, должно быть, пробовал это среди нескольких других, но не пропускал «-processImage» на слайдере. Спасибо Брэд - очень благодарен. – Ralphonzo

+0

Здравствуйте, Можете ли вы рассказать мне, как я могу удалить зеленый цвет из UIImage, который у меня есть? –

Смежные вопросы