Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios GPUImagePicture是否具有GPUImageBuffer目标?_Ios_Objective C_Gpuimage - Fatal编程技术网

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的构建也没有考虑静态图像输入。