Tag: gpuimage

将GPUImagefilter应用于UIView

我有一个问题。 我需要应用像Pixelate or Blur滤镜到整个UIView 。 就像eBay iPad应用程序一样。 我以为使用GPUImage但我不知道该怎么做。 有一种方法可以直接将filter应用于GPUImageView ,而无需传递UIImage ? 主要的问题是,在iPad 3上制作一个大的UIView的截图是昂贵的( UIWindow抓取2秒)。 所以完美的解决scheme是直接应用filter的意见,就像易趣的应用程序,但..如何? 谢谢大家!

GPUImage:较暗的iOS 7模糊效果

我需要一个可靠,高效的方法来创buildiOS 7模糊效果。 我已经从WWDC代码实现了Apple的applyBlurWithRadius (UIImage+ImageEffects) 。 它实际上是非常灵活的,它允许更改tintColor也提供了创build一个像这样一个黑暗的模糊效果: 但它依赖于核心graphics,它正在降低表格视图中的滚动性能。 然后我看到了BradLarson的GPUImage库 ,它是GPUImageiOSBlurFilter方法,它复制了iOS 7的效果,它的工作速度比UIImage+ImageEffects ,所以它在我看来更加实用。 但问题是,它没有像tintColor这样的参数。 它创造像这里一样的效果。 还有其他GPUImage的filter,但我不知道我可以得到我想要的效果。

GPUImage imageFromCurrentFramebuffer有时为GPUImageLookupFilter返回nil,它的子类

我一直在为我的项目使用GPUImage ,我正在进入这个问题,其中imageFromCurrentFramebuffer返回零的GPUImageLookupFilter's一些。 我在GPUImageFilterGroup像GPUImageFilterGroup样子类如下: -(MTLookupFilter *) initWithLookupImageName:(NSString *) lookupImageName { self = [super init]; if (self) { UIImage *image = [UIImage imageNamed:lookupImageName]; self.lookupImageSource = [[GPUImagePicture alloc] initWithImage:image]; GPUImageLookupFilter *lookupFilter = [[GPUImageLookupFilter alloc] init]; [self addFilter:lookupFilter]; [self.lookupImageSource addTarget:lookupFilter atTextureLocation:1]; [self.lookupImageSource processImage]; self.initialFilters = [NSArray arrayWithObjects:lookupFilter, nil]; self.terminalFilter = lookupFilter; } return self; } 我有几个这个类的对象添加到数组中,我使用: – (IBAction)filterAction:(id)sender { […]

使用GPUImagePoissonBlendFilter进行混合

我试图使用GPUImage框架的GPUImagePoissonBlendFilter混合两个脸在我的脸混合应用程序。 这是我的代码。 – (void)applyPoissonBlendToImage:(UIImage *) rearFace withImage:(UIImage *) frontFace { GPUImagePicture* picture1 = [[GPUImagePicture alloc] initWithImage:rearFace]; GPUImagePicture* picture2 = [[GPUImagePicture alloc] initWithImage:frontFace]; GPUImagePoissonBlendFilter * poissonFilter = [[GPUImagePoissonBlendFilter alloc] init]; poissonFilter.mix = .7; poissonFilter.numIterations = 200; [picture1 addTarget:poissonFilter]; [picture1 processImage]; [picture2 addTarget:poissonFilter]; [picture2 processImage]; finalResultImage = [poissonFilter imageFromCurrentlyProcessedOutputWithOrientation:rearFace.imageOrientation]; } 即你可以看到,我给了这个方法的两个图像(rearFace和frontFace)作为input。 图像正面是一个形状(通过连接相对眼睛和嘴的位置形成的多边形形状),并且具有与背面图像i.e相同的尺寸(为了匹配尺寸,我填充了多边形外部的空间在绘图时具有透明的颜色)。 但是混合不会像我预期的那样发生。 即正面的锋利边缘没有适当地混合到背面。 这里我的假设是PoissonBlendFilter从左上angular开始混合第二个图像,而不是脸部的左上边界。 问题:我觉得input图像没有正确input到滤镜中。 我是否需要对input图像应用某种遮罩? […]

GPUImage2:HarrisCornerDetector不调用callback

我有一个奇怪的问题,使用GPUImageangular落检测。 我试图使用从Brad的下载filter模板作为起点,但虽然我可以生成图像和angular点(如单个白色像素)的复合视图,当我尝试添加在十字线发生器,callback函数永远不会被调用。 在我简化的例子中,我有一个输出视图configuration为RenderView和videoCamera定义为Camera? do { videoCamera = try Camera(sessionPreset:AVCaptureSessionPreset640x480, location:.backFacing) videoCamera!.runBenchmark = true } catch { videoCamera = nil print("Couldn't initialize camera with error: \(error)") } let filter = HarrisCornerDetector() let crosshairGenerator = CrosshairGenerator(size: Size(width: 480, height: 640)) filter.cornersDetectedCallback = { corners in crosshairGenerator.renderCrosshairs(corners) } videoCamera! –> filter let blendFilter = AlphaBlend() videoCamera! –> blendFilter […]

GPUImageMovieWriter – 崩溃时,状态为2时无法调用方法

尝试开始使用由Brad Larson亲切地分享的真正伟大的GPUImage框架,但有一个问题。 运行SimpleVideoFileFilter示例时,它总是崩溃,出现以下错误: [AVAssetWriterInput markAsFinished]状态为2时无法调用方法 任何人都知道如何纠正这一点? 在模拟器中运行时也看不到video,对模拟器不起作用吗? 运行iOS 6.1和Xcode 4.6 谢谢! 我注意到finishRecordingWithCompletionHandler被调用两次,第二次调用崩溃

如何使用GPUImageHarrisCornerDetectionFilter获得转angular

我正在尝试使用GPUImageHarrisCornerDetectionFilter从静止图像中获取angular点。 我已经看了这个项目中的代码示例,我已经看过这个文档,并且看过这个post,这个post大概是这样的: 在现有的UIImage上,GPUImage Harris Corner Detection给出了一个黑屏输出 但是我不能使它工作 – 而且我很难理解这是如何处理静止图像的。 我现在所拥有的是: func harrisCorners() -> [CGPoint] { var points = [CGPoint]() let stillImageSource: GPUImagePicture = GPUImagePicture(image: self.image) let filter = GPUImageHarrisCornerDetectionFilter() filter.cornersDetectedBlock = { (cornerArray:UnsafeMutablePointer<GLfloat>, cornersDetected:UInt, frameTime:CMTime) in for index in 0..<Int(cornersDetected) { points.append(CGPoint(x:CGFloat(cornerArray[index * 2]), y:CGFloat(cornerArray[(index * 2) + 1]))) } } filter.forceProcessingAtSize(self.image.size) stillImageSource.addTarget(filter) stillImageSource.processImage() return […]

ios保存GPUImagevideo

我使用GPUImage在video上添加了叠加层。 预览它看起来不错,但我怎么能写我的video文件? 我使用GPUMovieWriter,但我不能find这个文件,我甚至不知道它是否工作。 这是我的代码: -(void)setUpCameraWithPosition:(bool)switchToFrontCamera { if(videoCamera != nil) { [videoCamera stopCameraCapture]; } if(switchToFrontCamera) { videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionFront]; } else { videoCamera = [[GPUImageVideoCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; } videoCamera.outputImageOrientation = UIInterfaceOrientationPortrait; videoCamera.horizontallyMirrorFrontFacingCamera = NO; videoCamera.horizontallyMirrorRearFacingCamera = NO; filter = [GPUImageiOSBlurFilter new]; filter.blurRadiusInPixels = 3.0; GPUImageAlphaBlendFilter *blendFilter = [[GPUImageAlphaBlendFilter alloc] init]; blendFilter.mix = […]

GPUImage色度键filter

我正在尝试使用GPUImage框架的色度键filter。 我跟着Filtershowcase的例子,但显然我错过了一些事情,只显示video,但没有绿屏输出效果。 这是我的video摄像头/filter的初始化: camera = [[GPUImageStillCamera alloc] initWithSessionPreset:AVCaptureSessionPreset640x480 cameraPosition:AVCaptureDevicePositionBack]; camera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; camera.horizontallyMirrorFrontFacingCamera = NO; camera.horizontallyMirrorRearFacingCamera = NO; chromaKeyFilter = [[GPUImageChromaKeyFilter alloc] init]; chromaKeyFilter.thresholdSensitivity = sliderThres.value; UIImage *inputImage = [UIImage imageNamed:@"WID-small.jpg"]; GPUImagePicture *sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES]; [camera addTarget:chromaKeyFilter]; [sourcePicture addTarget:chromaKeyFilter]; [sourcePicture processImage]; [chromaKeyFilter addTarget:viewCamera]; [camera startCameraCapture]; 所以相机和sourcePicture都进入了滤镜,滤镜比进入viewCamera。 但是现在,我只看到简单的video,没有抠像效果。 (我有一个滑块,改变了门槛)。 用GPUImageChromaKeyBlendFilter 更新 camera = […]

如何使用GPUImage实现GPUImageMaskFilter

我需要使用蒙版从完整图像中剪切并创build蒙版图像。 + = 我尝试了以下内容: UIImage *imgMask = [UIImage imageNamed:@"Mask.png"]; UIImage *imgBgImage = [UIImage imageNamed:@"Full.png"]; GPUImageMaskFilter *maskingFilter = [[GPUImageMaskFilter alloc] init]; GPUImagePicture * maskGpuImage = [[GPUImagePicture alloc] initWithImage:imgMask ]; GPUImagePicture *FullGpuImage = [[GPUImagePicture alloc] initWithImage:imgBgImage ]; [maskGpuImage addTarget:maskingFilter]; [maskGpuImage processImage]; [maskingFilter useNextFrameForImageCapture]; [FullGpuImage addTarget:maskingFilter]; [FullGpuImage processImage]; UIImage *OutputImage = [maskingFilter imageFromCurrentFramebuffer]; 但是,我生成的输出图像是: 请大家携起手来。 干杯。 另外,感谢BradLarson 。