Ios GPUImagePicture是否具有GPUImageBuffer目标?
当Ios GPUImagePicture是否具有GPUImageBuffer目标?,ios,objective-c,gpuimage,Ios,Objective C,Gpuimage,当TARGET\u IPHONE\u SIMULATOR为真时,我尝试执行以下操作来显示图像,而不是尝试访问视频 UIImage *image = [UIImage imageNamed:@"fake_camera"]; GPUImagePicture *fakeInput = [[GPUImagePicture alloc] initWithImage:image]; GPUImageBuffer *videoBuffer = [[GPUImageBuffer alloc] init]; [
TARGET\u IPHONE\u SIMULATOR
为真时,我尝试执行以下操作来显示图像,而不是尝试访问视频
UIImage *image = [UIImage imageNamed:@"fake_camera"];
GPUImagePicture *fakeInput = [[GPUImagePicture alloc] initWithImage:image];
GPUImageBuffer *videoBuffer = [[GPUImageBuffer alloc] init];
[fakeInput processImage];
[fakeInput addTarget:videoBuffer];
[videoBuffer addTarget:self.backgroundImageView]; //backgroundImageView is a GPUImageView
这将以黑色呈现我的backgroundImageView
,而不显示我的图像
如果我将fakeInput
的输出直接发送到backgroundImageView
,我会看到backgroundImageView
中正常渲染的图片
这是怎么回事
编辑:
正如Brad建议的那样,我尝试了:
UIImage *image = [UIImage imageNamed:@"fake_camera"];
_fakeInput = [[GPUImagePicture alloc] initWithImage:image];
GPUImagePicture *secondFakeInput = [[GPUImagePicture alloc] initWithImage:image];
[_fakeInput processImage];
[secondFakeInput processImage];
[_fakeInput addTarget:_videoBuffer];
[secondFakeInput addTarget:_videoBuffer];
[_videoBuffer addTarget:_backgroundImageView];
我还尝试:
UIImage *image = [UIImage imageNamed:@"fake_camera"];
_fakeInput = [[GPUImagePicture alloc] initWithImage:image];
[_fakeInput processImage];
[_fakeInput processImage];
[_fakeInput addTarget:_videoBuffer];
[_videoBuffer addTarget:_backgroundImageView];
这两种方法似乎都不起作用。。。应该吗?GPUImageBuffer顾名思义就是缓冲帧。如果向其发送静止照片,则该图像已缓冲,但尚未发送。您需要向其中发送第二个图像(或者第二次使用
-processImage
),以获得一帧深的默认缓冲区来显示原始帧
GPUImageBuffer对于静态图像实际上没有任何用途。它旨在作为视频的帧延迟操作,以便进行帧到帧的比较,如低通滤波器。如果你需要对静止图像进行帧比较,混合是一种更好的方式。谢谢,这主要是为了运行测试,所以这或多或少就是重点。嘿,Brad,尝试了你的建议(并编辑了我的帖子)。他们似乎没有解决这个问题。也许我误解了什么?@Goles-向它添加两个目标不起作用,因为它只识别一个输入,所以第一种方法不起作用。对于第二种情况,它可能会识别出您只在第二次发送第一个图像,而忽略第二次输入。同样,GPUImageBuffer的构建也没有考虑静态图像输入。