Я использую библиотеку GPUImage, и я пытаюсь объединить два изображения в реальном времени и отображать их на GPUImageView
. Я пытаюсь использовать альфа-смесь обычного ввода с фильтрованной версией. Вот то, что я пытаюсь сделать:GPUImageAlphaBlendFilter обработка в реальном времени из источника GPUImageStillCamera
----------------->----v
--camera--| alpha blend ----> image view
-----> color filter --^
Я нашел некоторые сообщения об использовании смеси фильтров, но они не кажутся методы обработки в реальном времени. Я нашел https://github.com/BradLarson/GPUImage/issues/319, GPUImage: blending two images и https://github.com/BradLarson/GPUImage/issues/751 (но они либо не предназначены для обработки в реальном времени, (первый и второй), или не работает (третий).
Я попробовал почти все, но все, что я получаю, является белым изображением в GPUImageView.Если я не использую фильтр альфа-смеси, скажем, просто использую фильтр ложных цветов или что-то подобное, он отлично работает. Вот мой код:
blendFilter = [[GPUImageAlphaBlendFilter alloc] init];
blendFilter.mix = 0.5;
[blendFilter prepareForImageCapture];
[blendFilter addTarget:imageView];
passThrough = [[GPUImageFilter alloc] init];
[passThrough prepareForImageCapture];
[passThrough addTarget:blendFilter];
selectedFilter = [[GPUImageFalseColorFilter alloc] init];
[selectedFilter prepareForImageCapture];
[selectedFilter addTarget:blendFilter];
stillCamera = [[GPUImageStillCamera alloc] init];
stillCamera.outputImageOrientation = UIInterfaceOrientationPortrait;
[stillCamera addTarget:passThrough];
[stillCamera addTarget:selectedFilter];
[stillCamera startCameraCapture];
Все, что я получаю, это белый пустой экран. Если я меняю [selectedFilter addTarget:blendFilter];
на [selectedFilter addTarget:imageView];
, тогда на изображении будет отображаться фильтр ложных цветов.
Кажется, что что-то не так с фильтром альфа-смеси. Я прочитал, что в некоторых сообщениях мне нужно называть processImage
на входах, но эти сообщения все для ввода в реальном времени, насколько я понимаю. Как я могу заставить GPUImageAlphaBlendFilter работать в реальном времени?