2017-03-22 65 views
0

我使用Android Studio的2.3版本Android Studio中的OpenCV的Canny檢測失敗T_T

我用opencv實現3.2 Android和我的電話的Android verison是4.4.2

這是我的一些源代碼。

請注意區分VIEW_MODE_CANNY

@Override 
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { 

    final int viewMode = mViewMode; 
    switch(viewMode){ 
     case VIEW_MODE_RGBA: 
      mRgba = inputFrame.rgba(); 
      break; 
     case VIEW_MODE_GRAY: 
      Imgproc.cvtColor(inputFrame.gray(), mRgba, Imgproc.COLOR_GRAY2RGBA, 4); 
      break; 
     case VIEW_MODE_CANNY: 
      try{ 
       Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY); 
       Imgproc.GaussianBlur(mGray, mGray, new Size(5, 5), 2, 2); 
       Imgproc.Canny(mGray, mIntermediateMat, 35, 75); 
       Imgproc.cvtColor(mIntermediateMat, mRgba, Imgproc.COLOR_GRAY2BGRA, 4); 
      }catch(Exception e){ 
       Log.i(TAG,e.toString()); 
       e.printStackTrace(); 
      } 
      break; 
    } 
    return mRgba; 
} 

我的應用程序顯示3輸精管視圖。灰色,彩色和Canny

灰色和彩色運行良好。

但如果我選擇canny它會自動終止。

沒有日誌,沒有異常

我甚至無法猜測爲什麼不

請給我提示..

+0

你應該嘗試調試你的應用程序 –

回答

0

它看起來對我的錯誤是在這一行:

Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY); 

應該是:

Imgproc.cvtColor(inputFrame.rgba(), mGray, Imgproc.COLOR_RGBA2GRAY);  

由於您將未初始化的輸入圖像提供給cvtColor,因此它崩潰。

順便說一下,您的VIEW_MODE有點令人困惑:不清楚它是指您獲得的輸入類型,還是您想要生成的輸出類型。