首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GPUImage绿色屏幕

GPUImage绿色屏幕
EN

Stack Overflow用户
提问于 2012-12-20 10:54:55
回答 1查看 1.6K关注 0票数 2

我正试着用GPUImage做一个绿屏效果。我试图达到的效果是播放一部窗帘打开的电影,并用图像替换电影中的白色部分。这将显示窗帘,然后打开窗帘以显示图像。

我有正确的电影显示,电影的白色部分是黑色的,但当窗帘打开时图像不显示。有没有人可以看看下面的代码,告诉我我做错了什么?

提前谢谢。格雷格

代码语言:javascript
复制
NSURL *sampleURL = [[NSBundle mainBundle] URLForResource:@"CurtainsOpening" withExtension:@"m4v"];

GPUImageMovie *movieFile = [[GPUImageMovie alloc] initWithURL:sampleURL];

movieFile.playAtActualSpeed = YES;

NSLog(@"movie file = %@", movieFile);

GPUImageChromaKeyBlendFilter *filter = [[GPUImageChromaKeyBlendFilter alloc] init];
[(GPUImageChromaKeyBlendFilter *)filter setColorToReplaceRed:1.0 green:1.0 blue:1.0];
[(GPUImageChromaKeyBlendFilter *)filter setThresholdSensitivity:0.0]; //was 0.4

[movieFile addTarget:filter];

UIImage *inputImage = [UIImage imageNamed:@"curtains.jpg"];
NSLog(@"inputImage = %@", inputImage);
GPUImagePicture *overlayPicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES];

NSLog(@"overlayPicture = %@", overlayPicture);

[overlayPicture processImage];
[overlayPicture addTarget:filter];
//[movieFile addTarget:overlayPicture];

GPUImageView *view0 = [[GPUImageView alloc] initWithFrame:self.view.frame];
[view0 setFillMode:kGPUImageFillModeStretch];

NSLog(@"view0 = %@", view0);
[filter addTarget:view0];

[self.view addSubview:view0];

[view0 bringSubviewToFront:self.view];

NSLog(@"frame = %f %f", self.view.frame.size.width, self.view.frame.size.height);

[movieFile startProcessing];
EN

回答 1

Stack Overflow用户

发布于 2012-12-21 12:07:27

我想通了。如果有人想知道,您需要将GPUImagePicture变量设置为实例变量,这样代码在退出方法时就不会从内存中删除该变量。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13964594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档