2013-02-28 91 views
3

我在使用iPhone或iPad上的OpenGL ES查找任何有關裁剪圖像的文檔時遇到困難。使用OpenGL ES 2.0 iOS裁剪(與使用核心圖像相比)

具體來說,我以一種輕微快速的速度(20 FPS)捕捉視頻幀,並且需要快速的東西來裁剪圖像。這裏使用OpenGL是否可行?如果是這樣,它會比使用Core Image及其相關方法裁剪更快嗎?

看來,使用核心圖像方法,我不能達到比約10-12 FPS輸出更快,我正在尋找一種方法來達到20.任何建議或指針使用OpenGL的呢?

+0

你可能不想自己做所有的OpenGL ES代碼,你可以看看這個:https://github.com/BradLarson/GPUImage 。特別是,GPUImageCropFilter應該做你想做的。 – 2013-03-01 03:26:10

+0

@BradLarson嘿是的,我仔細看了一下你的代碼,我不得不說我的工作給我留下了深刻的印象。關於使用您的實現方式,我唯一遇到的問題是它是否適用於實時視頻饋送 - 僅僅因爲它被歸類爲圖像過濾器。我不確定它是否打算以我需要的方式使用。你會說它可以以這種方式使用嗎?肯定會爲我節省很多頭痛.. – bgoers 2013-03-01 04:33:06

+1

它的唯一目的是用攝像頭的實時視頻進行操作。我在這裏有一些基準:http://stackoverflow.com/a/6628208/19679(我需要更新iOS 6.0)。構建並運行FilterShowcase示例,瞭解它如何執行實時視頻。裁剪濾鏡可能是最快的,所以它應該在iPhone 4上以約25-30 FPS的速度裁剪和錄製720p視頻,以及在4S以上以30 FPS的速度錄製1080p視頻。 – 2013-03-01 04:38:30

回答

3

顯然,使用OpenGl ES會比Core Image Framework快。裁剪圖像將被設置紋理來完成座標,以一般,紋理座標總是這樣,

{ 
0.0f,1.0f, 
1.0f,1.0f, 
0.0f,0.0f, 
1.0f.0.0f 
} 

整個圖像將與紋理被drawed座標之上。如果你只是想要一個圖像的右上部分,您可以設置紋理座標這樣,

{ 
0.5f,1.0f, 
1.0f,1.0f, 
0.5f,0.5f, 
1.0f.0.5f 
} 

這將在右上獲得整個圖像的四。你永遠不會忘記OpenGl ES的座標原點位於左下角

+0

好吧,現在假設我有一個從CIFaceDetector計算出來的矩形,我想我只是規範了座標嗎?我從來沒有真正使用過OpenGL,因此有什麼資源可以指向我在哪裏我可以看到實際從舊紋理和一組座標渲染新紋理? – bgoers 2013-02-28 01:58:15

+1

@bgoers是的,您首先將從CIFaceDetector得到的矩形與歸屬的原始大小進行歸一化,然後獲得紋理座標。使用OpenGl ES渲染紋理,您可以從我的開源程序** Camera **(https://github.com/zhzhy/Camera)獲得幫助,或從developer.apple.com下載演示,例如RosyWriter,GLCameraRipple等T hese程序將幫助您學習熟悉OpenGl ES的用法。 – zhzhy 2013-02-28 02:18:16

+0

謝謝。我會看看它。我將不得不閱讀OpenGL瞭解一些功能! – bgoers 2013-02-28 02:47:25