2017-07-03 35 views
2

我正在製作一個Android應用程序,它使用Google臉部API檢測畫廊中所有圖像的臉部。處理所有圖像需要很長時間,因此應用程序長時間卡住。任何解決方法? 我試着減小圖像的大小然後處理,但是它給出了錯誤的答案。通過Google Face API緩慢處理所有圖片?

+2

您是否試過運行此代碼異步?這很正常,需要一段時間,所以你應該確保它不會阻止你的用戶界面。 – M0CH1R0N

+0

處理50張圖像需要大約25秒的時間,因此即使我將其設置爲異步,處理大量圖片所用的時間也非常長。 –

回答

0

2分鐘,715個圖像是一個非常好的時間。
步驟,可以採取:

  1. 實現快速模式FaceDetector
  2. 集setTrackingEnabled爲false,如果你不希望根據自己的數據集
  3. 跟蹤
  4. 設定最低臉部尺寸的合適尺寸
  5. 使用Universal Image Loader或Android的滑動庫加載位圖。我使用了UIL庫。
  6. 640x480是用於人臉檢測和分類的最佳尺寸,可縮小尺寸以縮短時間並獲得幾乎相同的結果。
  7. 根據需要設置setLandmarkType和setClassificationType,如果不需要則禁用。
0

禁用圖像跟蹤

FaceDetector detector = new FaceDetector.Builder(context) 
      .setTrackingEnabled(false) 
      .build(); 

這是true默認,並可能減緩檢測,如果你不需要這個功能。

+0

在我的情況下,它默認爲false。 –

0

如果你看一下FaceDetector.Builder的文檔,你會看到你可以設置一些屬性來提高速度。

例如爲:

public FaceDetector.Builder setProminentFaceOnly (boolean prominentFaceOnly) 
+0

我嘗試使用通用圖像加載程序庫來創建位圖,然後使用這些位圖創建用於人臉檢測的幀。 –

+0

我的大部分圖像都不是真的有多個面,所以它不會產生顯着的差異。 我不確定是否有可能減少時間比我迄今所做的更多。 –

+0

大約需要2分15秒才能檢測715張圖像中的臉部。 –