2016-03-07 135 views
1

沒有人知道如何使absdiff在opencv中工作。 下面的代碼提供了錯誤:opencv 3.1.0 absdiff不起作用

@Override 
    public void onManagerConnected(int status) { 
     if (status == LoaderCallbackInterface.SUCCESS) { 
      // now we can call opencv code ! 
      //helloworld(); 

      Log.i(TAG, "OpenCV is ready"); 
      Mat m1 = Mat.zeros(100,100, CvType.CV_8UC1); 
      Mat m2 = Mat.zeros(100,100, CvType.CV_8UC1); 
      Mat m3 = Mat.zeros(100,100, CvType.CV_8UC1); 
      Core.absdiff(m1,m2,m3); 

     } else { 
      super.onManagerConnected(status); 
     } 
    } 

Fatal signal 11 (SIGSEGV), code 1, fault addr 0x16 in tid 5110

Tryed移動到OpenCV的2.4.11的previos版本,但它在初始化的問題。

java.lang.RuntimeException: Unable to resume activity ...: java.lang.IllegalArgumentException: Service Intent must be explicit: Intent { act=org.opencv.engine.BIND } at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2956) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2987) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2370)

但是,回到OpenCV的3.1.0的問題是核心功能。減去,加,absdiff給錯誤

Fatal signal 11 (SIGSEGV), code 1, fault addr 0x16 in tid 5110

沒有人符合這個問題?或有一個想法是圖書館或使用情況有問題嗎?

在此先感謝您的幫助。

+0

您是否嘗試過使用'Mat m1 = new Mat.zeros(100,100,CvType.CV_8UC1);'etc ...? – Miki

回答

0

我有同樣的問題。我轉移到以前版本的opencv 3.0.0,問題已解決。

0

像這樣的東西可以幫助你。但它真的很慢。我真的推薦使用absdiff從Android SDK 3.0版本而不是3.1,並等待修復升級到3.1。

Android SDK absdiff可以遲到1 [ms],而這部分代碼2700 [ms]如果Mats的大小增加幾乎不會增加。

// OriginalImage is RGBColor, CurrentImage is GrayScale, you could change this with minor adjusts. 

    Mat dest = OriginalImage.clone(); 
    byte[] b = new byte[4]; 
    for (int j= 0; j<OriginalImage.cols(); ++j) 
    { 
     for (int i=0; i<OriginalImage.rows(); ++i) 
     { 
      b[0] = (byte)Math.abs(OriginalImage.get(i,j)[0] - CurrentImage.get(i,j)[0]); 
      //b[1] = valor; 
      //b[2] = valor; 
      //b[3] = (byte)(255 & 0xFF); 
      dest.put(i,j, b); 
     } 
    } 
    CurrentImage = dest; 
7

更新: OpenCV的3.2不受影響。


看來,這是分佈在Play Store的OpenCV的經理版中的問題(更新21/09/15)。

使用Android SDK 分發的版本正常工作OpenCV-android-sdk/apk/OpenCV_3.1.0_Manager_3.10_{platform}.apk)。您可以從OpenCV website下載。

從亞行安裝APK:

adb install OpenCV-android-sdk/apk/OpenCV_3.1.0_Manager_3.10_{platform}.apk 

相關的問題:#5722#6247#6488

+0

Thanks.It爲我工作 –

+0

爲我工作! – Nullpoet

+0

有類似的問題(不完全相同),但這個解決方案幫助了我。謝謝 – noamgot

相關問題