【问题标题】:I get an error if I insert this function -imageFromCurrentFramebufferWithOrientation - (GPUImageLookupFilter)如果我插入此函数 -imageFromCurrentFramebufferWithOrientation - (GPUImageLookupFilter) 会出现错误
【发布时间】:2014-04-19 17:30:14
【问题描述】:

我在实施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];
}

【问题讨论】:

标签: ios cocoa-touch gpuimage


【解决方案1】:

首先,请通读我在the very first page of the project 上写的文档。在继续前进之前,您可以通过阅读它来省去很多麻烦。盲目地从互联网上复制代码并不是构建应用程序的好方法。

正如我在my answer 中解释的那样,我在上一个问题中向您指出,框架处理帧缓冲区的方式已经改变,因此您发现的许多示例代码现在已经过时。要使用查找过滤器处理静止图像,您需要在触发上述-processImage 之前将-useNextFrameForImageCapture 发送到您的查找过滤器。 -processImage 导致初始图像通过链式过滤器操作级联,并且您需要告诉最终过滤器您将在触发该处理之前从中提取图像。

完成后,您可以使用-imageFromCurrentFramebuffer-imageFromCurrentFramebufferWithOrientation: 提取图像(注意后者中的参数,因为您的上面的代码不会编译)。

再次,请阅读我在 GPUImage 的 GitHub 存储库首页和我之前的回答中链接到的资源,然后再继续。你真的应该明白它是如何运作的,这就是为什么我没有在这里用勺子喂你你需要的代码。

【讨论】:

  • 好的,我已经阅读了文档。并编辑了我的代码。请看一下(我替换了问题中的旧代码)。但现在我得到另一个错误。也许我不明白,因为英语不是我的母语。
  • @user3550084 - 这个最新的错误是因为 GPUImageFilter 是一个类的名称,而不是它的一个实例。 -useNextFrameForImageCapture 是一个实例方法,而不是类方法,所以你需要在你的过滤器实例上调用它,而不是 GPUImageFilter 作为一个类。
  • 我添加了 GPUImageLookupFilter 的实例,现在它可以工作了。但是我在这行代码中遇到另一个错误(我已经更新了问题): UIImage *adjustedImage = [lookupFilter imageFromCurrentFramebufferWithOrientation];
  • 现在可以了。我忘了设置方向。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 2022-01-16
  • 1970-01-01
  • 2019-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-08-28
相关资源
最近更新 更多