我在实施GPUImageLookupFilter
时遇到问题。
我在这行代码中遇到错误:UIImage *adjustedImage = [lookupFilter imageFromCurrentFramebufferWithOrientation];
它说(错误):
"No visible @interface for 'GPUImageLookupFilter' declares the selector 'imageFromCurrentFramebufferWithOrientation'"
这是我的代码:
- (IBAction)filter1:(id)sender;
{
GPUImageLookupFilter *lookup = [[GPUImageLookupFilter alloc] init];
GPUImagePicture *stillImageSource = [[GPUImagePicture alloc] initWithImage:imgView];
GPUImagePicture *lookupImageSource = [[GPUImagePicture alloc] initWithImage:[UIImage imageNamed:@"lookup_Invert.png"]];
GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init];
[stillImageSource addTarget:lookupFilter];
[lookupImageSource addTarget:lookupFilter];
[stillImageSource processImage];
[lookupFilter useNextFrameForImageCapture];
[lookupImageSource processImage];
UIImage *adjustedImage = [lookupFilter imageFromCurrentFramebufferWithOrientation];
}
答案 0 :(得分:1)
首先,请仔细阅读我在the very first page of the project上撰写的文档。在进一步发展之前,通过阅读它可以省去很多麻烦。盲目地从互联网上复制代码并不是构建应用程序的好方法。
正如我在前面提到的my answer中所解释的那样,框架处理帧缓冲区的方式已经发生了变化,因此您发现的大量示例代码现在已经过时了。要使用查找过滤器处理静态图像,您需要在上面触发-useNextFrameForImageCapture
之前将-processImage
发送到查找过滤器。 -processImage
会导致初始图像在链接过滤器操作中级联,您需要告诉最终过滤器,在触发处理之前,您将从中提取图像。
完成后,您可以使用-imageFromCurrentFramebuffer
或-imageFromCurrentFramebufferWithOrientation:
提取图像(请注意后者中的参数,因为上面的代码无法编译)。
同样,在继续进行之前,请先阅读我在GPUImage的GitHub存储库首页上链接的资源以及我之前的答案。你真的应该理解它是如何运作的,这就是为什么我不是在为你提供你需要的代码。