2013-04-09 54 views
3

在iPad的Retina顯示屏(設備,而不是仿真器),我第一次用蘋果的AVFoundation來拍攝靜態圖像,但我切換到GPUImage,因爲我想要的ChromaKeyBlend功能。跑了。但是,問題是,當我點擊我的相機按鈕,AVFoundation,相機立即出現,並與GPUImage它需要5秒!GPUImage相機拍攝五秒鐘

那是可以預料的加載時間?我知道它必須是同步的,不能在後臺。

那麼,什麼是別人做給速度可達,或者他們只是把屏幕上的活動指示燈,讓用戶等待那五個秒了嗎?

任何提示將不勝感激。謝謝!

+0

隨着儀器,似乎它需要3.6秒到'[[GPUImagePicture的alloc] initWithImage:inputImage的smoothlyScaleOutput:YES]'用於2420x1936像素圖像。我所做的是做在父視圖控制器的背景排隊該處理,並通過SEGUE期間所處理的圖像的攝像機視圖。現在,如果他們在3.6秒之前嘗試使用相機,還沒有弄清楚;) – user1139479 2013-04-10 02:16:10

回答

0

嗯,我加載圖像到GPUImagePicture,但我想我有管道的權利,我真的很喜歡靈敏度的實時調節(帶滑塊)。正如我所說的,我嘗試在背景中預處理圖像,並剪掉幾秒鐘(即使我使用相同尺寸的完全透明圖像,仍然需要5秒鐘)。希望有一些祕密醬)

stillCamera = [[GPUImageStillCamera alloc] init]; 
stillCamera.outputImageOrientation = UIInterfaceOrientationLandscapeLeft; 

UIImage *inputImage = [UIImage imageNamed:@"RedCurtain-60-8x10.jpg"]; // 346kb 
self.sourcePicture = [[GPUImagePicture alloc] initWithImage:inputImage smoothlyScaleOutput:YES]; 
[self.sourcePicture processImage]; 

self.chromaKeyBlendFilter = [[GPUImageChromaKeyBlendFilter alloc] init]; 
[self.chromaKeyBlendFilter setColorToReplaceRed:0.0 green:1.0 blue:0.0]; 
[self.chromaKeyBlendFilter setThresholdSensitivity:0.35f]; 

[stillCamera addTarget:self.chromaKeyBlendFilter]; 
[self.sourcePicture addTarget:self.chromaKeyBlendFilter]; 
[self.chromaKeyBlendFilter addTarget:(GPUImageView *)self.videoPreviewView]; 
+0

這是問題的源頭圖片及其處理。我沒有使用帶有內容的圖像,而是嘗試了一張2420x1936的透明圖像,並將其切出約一秒。然後,我試圖1x1像素透明PNG和處理是亞秒與所述chromakeyed輸出顯示爲黑色爲整個屏幕。 – user1139479 2013-04-15 00:58:47

4

這聽起來像你不使用GPUImageStillCamera作爲輸入到GPUImage管道。使用UIImage,尤其是傳遞到具有平滑縮放設置爲YES的新GPUImagePicture實例的UIImage,要比直接從相機捕獲和處理照片要慢得多。通過AV Foundation從相機捕獲,將其轉換爲UIImage,然後通過GPUImagePicture將該UIImage重新上傳到GPU,會帶來大量不必要的開銷。改爲使用GPUImageStillCamera以獲得最佳性能。

看那SimplePhotoFilter例如,對於如何做到這一點。當我測試在我的iPad上的Retina該應用程序(第3代,第4次沒有),它總共需要0.9秒,取,過濾器,並返回一個完整的照片,並附加0.6秒來保存照片的相機膠捲。

+0

但JPEG方法旋轉圖像。 – iBhavin 2015-02-25 12:23:45