2012-08-06 41 views
1

我正在使用Iphone應用程序。爲相機的每一幀應用濾鏡算法

我需要執行以下操作:當用戶單擊「攝像機選項卡」時,相機會在帶有圓形覆蓋圖的視圖內打開。

我想在攝像機上應用過濾算法。

我正在尋找最好的方法來做到這一點。有沒有可以幫助的圖書館?

我在做什麼目前:

  1. 我使用OpenCV庫。
  2. 我定義了一個計時器。
  3. 對於每個計時器滴答我請從OpenCV 框架cvCaptureFromCam()方法(這將捕獲用照相機圖像,並返回 它)。
  4. 我在捕獲的圖像上應用算法。
  5. 我在UIImageView

的想法是,在每個時鐘滴答我得到的圖像,將其過濾,並把它放在UIImageView顯示圖像。如果計時器計時器足夠快,它將顯示爲連續的。

但是cvCaptureFromCam有點慢,這整個過程需要太多的內存。

任何建議更好的方式是非常感謝。謝謝

+0

如果只需要顯示圖片,您可以在過濾之前使用'resize',以使其具有確切的大小:這將加快過濾過程(很可能)。 – Olotiar 2012-08-06 12:26:12

+1

查看「核心圖像入門」和「核心圖像技術」的WWDC 2012視頻。如果您想構建自己的自定義OpenGL ES着色器以進行過濾,您還可以找到Brad Larsons GPUImage項目,這些項目非常值得關注。 – CSmith 2012-08-06 12:27:36

回答

1

任何基於CPU處理的處理器(例如OpenCV)在當前iOS設備上實時視頻過濾的速度可能會太慢。正如我在this answer中所述,我強烈建議尋找OpenGL ES。

正如CSmith所說,我已經編寫了一個名爲GPUImage的開源框架,用於執行這種基於GPU的過濾風格,而不必擔心涉及的底層OpenGL ES。該框架中的大多數濾鏡可以應用於640x480的實況視頻,而且可以應用於iOS相機的30 FPS幀率以上。我一直在逐漸添加過濾器,目標是替換Core Image中的所有內容,以及OpenCV的大部分圖像處理功能。如果我從OpenCV中找不到您需要的東西,請在項目的問題頁面上告訴我。

構建並運行FilterShowcase示例應用程序以查看可用過濾器的完整列表以及它們如何在實況視頻源上執行,並查看SimplePhotoFilter示例以瞭解如何應用這些過濾器來預覽視頻和照片相機。

+0

我一定會檢查它。看起來像GPU處理有更好的潛力 – Youssef 2012-08-08 10:24:39

+0

這是一個偉大的工作@布拉德。這是一個巨大的過濾器集合!!我希望我能找到一個應用油畫效果的過濾器(吝嗇鬼油過濾器)。你認爲可以將它添加到集合中嗎? – matt007 2016-06-14 12:03:11