2014-01-23 138 views
0
public void onManagerConnected(int status) { 

      switch (status) { 
       case LoaderCallbackInterface.SUCCESS: 
       { 
        Log.i(TAG, "OpenCV loaded successfully"); 


        System.loadLibrary("detection_based_tracker"); 


        try { 

InputStream is = getResources().openRawResource(R.raw.lbpcascade_frontalface); 

File cascadeDir = getDir("cascade", Context.MODE_PRIVATE); 

mCascadeFile = new File(cascadeDir, "lbpcascade_frontalface.xml"); 

FileOutputStream os = new FileOutputStream(mCascadeFile); 


         byte[] buffer = new byte[4096]; 
         int bytesRead; 
         while ((bytesRead = is.read(buffer)) != -1) { 
          os.write(buffer, 0, bytesRead); 
         } 
         is.close(); 
         os.close(); 


         mJavaDetector = new CascadeClassifier(mCascadeFile.getAbsolutePath()); 



         if (mJavaDetector.empty()) { 
          Log.e(TAG, "Failed to load cascade classifier"); 
          mJavaDetector = null; 
         } else 
     Log.i(TAG, "Loaded cascade classifier from " + mCascadeFile.getAbsolutePath()); 

         cascadeDir.delete(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
         Log.e(TAG, "Failed to load cascade. Exception thrown: " + e); 
        } 

        mOpenCvCameraView.enableView(); 
       } break; 
       default: 
       { 
        super.onManagerConnected(status); 
       } break; 
      } 
     } 
    }; 



    public Mat onCameraFrame(CvCameraViewFrame inputFrame) 
    { 


     mRgba = inputFrame.rgba(); 
     mGray = inputFrame.gray(); 



     if (mAbsoluteFaceSize == 0) { 
      int height = mGray.rows(); 
      if (Math.round(height * mRelativeFaceSize) > 0) { 
       mAbsoluteFaceSize = Math.round(height * mRelativeFaceSize); 
      } 



     } 


      MatOfRect faces = new MatOfRect(); 

      if (mDetectorType == JAVA_DETECTOR){ 
        if (mJavaDetector != null) 
    mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, 
         new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size()); 

      } 

      else { 
       Log.e(TAG, "Detection method is not selected!"); 
      } 


    Rect[] facesArray = faces.toArray(); 
for (int i = 0; i < facesArray.length; i++) 
      { 

    Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 5); 
    } 
    return mRgba; 

} 

執行此代碼進行人臉檢測時。我得到這個,應用程序意外停止。我決定做沒有任何選擇和所有的面部檢測。所以,任何人都可以告訴我我的代碼有什麼問題。應用程序意外停止。強制關閉。該怎麼辦?

在此先感謝。

logcat的
9月1日至24日:50:04.605:d/dalvikvm(335):的newInstance失敗:P0 I0 [0 A1

9月1日至24日:50:04.605:d/AndroidRuntime(335) :關閉VM

9月1日至24日:50:04.605:W/dalvikvm(335):線程ID = 1:螺紋與未捕獲的異常(組= 0x40015560)離開

9月1日至24日:50:04.625 :E/AndroidRuntime(335):致命例外:主

01-24 09:50:04.625:E/AndroidRuntime(335):java.lang.RuntimeException:無法實例化活動ComponentInfo {com.example.faces/com.example.faces.MainActivity}:java.lang.InstantiationException:com.example.faces.MainActivity

01-24 09:50:04.625:E/AndroidRuntime(335):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1569)

01-24 09:50:04.625:E/AndroidRuntime(335) :at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)

01-24 09:50:04.625:E/AndroidRuntime(335):at android.app.ActivityThread.access $ 1500(ActivityThread.java: 117)

9月1日至24日:50:04.625:E/AndroidRuntime(335):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:931)

9月1日至24日:50:04.625:E/AndroidRuntime(335):at android.os.Handler.dispatchMessage(Handler.java:99)

01-24 09:50:04.625:E/AndroidRuntime(335):at android.os.Looper.loop(Looper的.java:123)

01-24 09:50:04.625:E/AndroidRuntime(335):在android.app.ActivityThread.main(ActivityThread.java:3683)

01-24 9時50 :04.625:E/AndroidRuntime(335):at java.lang.refl ect.Method.invokeNative(本機方法)

9月1日至24日:50:04.625:E/AndroidRuntime(335):在java.lang.reflect.Method.invoke(Method.java:507)

01-24 09:50:04.625:E/AndroidRuntime(335):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839)

01-24 09:50:04.625: E/AndroidRuntime(335):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)

01-24 09:50:04.625:E/AndroidRuntime(335):at dalvik.system .NativeStart.main(Native Method)

九月1日至24日:50:04.625:E/AndroidRuntime(335):java.lang.InstantiationException:com.example.faces.MainActivity

九月1日至24日:50:04.625:致E/AndroidRuntime(335):在java.lang.Class。newInstanceImpl(本機方法)

01-24 09:50:04.625:E/AndroidRuntime(335):在java.lang.Class.newInstance(Class.java:1409)

01-24 9時五十:04.625:E/AndroidRuntime(335):在android.app.Instrumentation.newActivity(Instrumentation.java:1021)

01-24 09:50:04.625:E/AndroidRuntime(335):at android.app。 ActivityThread.performLaunchActivity(ActivityThread.java:1561)

9月1日至24日:50:04.625:E/AndroidRuntime(335):... 11更

+2

請給我們一個錯誤stacktrace ... –

+0

其實在控制檯中沒有發生錯誤。所以我給你發送logcat。 – Somashekar

+0

我在我的問題本身中附加了logcat。請仔細查看。 – Somashekar

回答

0

因爲我有相同示例代碼的工作版本,因此您附加的代碼沒有任何問題。您是否已將活動添加到AndroidManifest.xml文件?

+0

雅..我也已經完成活動的附件清單文件。 – Somashekar

1
Caused by: java.lang.InstantiationException: com.example.faces.MainActivity 

確保您MainActivity類可以被實例化。一些常見原因爲:

  • 該班級是abstract

  • 有一個顯式的構造函數,它需要參數。活動不應該真的需要一個明確的構造函數。如果提供了一個,它應該沒有參數。

+0

我的代碼中沒有抽象關鍵字。 – Somashekar

+0

編輯答案。還要考慮在問題中提供更多細節。異常說通過反射等效於'new com.example.faces.MainActivity()'失敗。 – laalto

0

我一直有同樣的問題,這種所有類型的應用程序表示意外停止/請強制關閉。我所做的是完全恢復了我的電話,這幫助我避免了這個問題。 恢復之前,請確保所有需要的文檔和文件都是安全的,轉移到其他設備,或者您可以從谷歌市場下載一個程序,這有助於將文件從文件轉移到文件中的其他新文件。 最後要恢復必須去設置 - 應用程序 - 恢復SD卡和手機,手機將被關閉,並需要重新開始上傳您的Gmail帳戶並連接到互聯網或WiFi。

相關問題