2013-12-11 17 views
0

我想在Android設備的內存中的圖片上畫一條線並將其顯示出來。我在AVD的SD卡中放置了一張圖片。我安裝了opencv庫,他們工作。但是我不知道如何在Android上通過OpenCV繪製圖片並顯示出我有問題的圖片。我的代碼沒有任何錯誤。但是當我在AVD中運行應用程序時,我的應用程序已被android停止!我的代碼是:在AVD的內存中顯示圖片..使用OpenCV

public class MainActivity extends Activity { 

    **@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Mat a=Highgui.imread("/mnt/sdcard/img5.jpg"); 

     Bitmap bm = Bitmap.createBitmap(a.cols(), a.rows(), Bitmap.Config.ARGB_8888); 
     Utils.matToBitmap(a, bm); 
     ImageView iw=new ImageView(this); 
     iw.setImageBitmap(bm); 
     setContentView(iw); 


    } 

回答

0

你不能在onCreate()中使用任何opencv代碼。

因爲它依賴於本機庫,所以您必須等待,直到它們正確加載(直到mLoaderCallback 返回)。

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
    @Override 
    public void onManagerConnected(int status) { 
     if (status == LoaderCallbackInterface.SUCCESS) { 
      // 
      // now we can call opencv code ! 
      // 
     } else { 
      super.onManagerConnected(status); 
     } 
    } 

onCameraViewStarted()可能是放置代碼(使用相機設置)的最佳位置。

+0

我應該創建一個新方法並將此代碼添加到它嗎?我不需要相機。我想通過imread讀取sdcard的圖片並通過opencv檢測它並顯示處理後的圖片 – user2855778

+0

啊,好的。是從凸輪設置更多的猜測。希望,你喜歡編輯;) – berak

+0

我應該將此函數添加到'mainActivity.java'或添加新的類並放到它嗎? – user2855778