2013-04-07 29 views
3

我正在嘗試在我的項目中實現SURF特徵,即關於人臉識別。我在android上的opencv是新的。所以找到邏輯錯誤有點難。此外,我試圖從谷歌搜索,但沒有我可以修復。 我導入了用於處理特徵問題的libray org.opencv.features2d。使用Android OpenCV SDK進行SURF特徵提取 - 獲取一些錯誤

開始時這是我的SURF實現代碼(的一部分)。

public void SURFExtraction() 
{ 
    FeatureDetector detector = FeatureDetector.create(FeatureDetector.SURF); 
    DescriptorExtractor SurfExtractor = DescriptorExtractor.create(DescriptorExtractor.SURF); 

    Mat img1 = Highgui.imread("/mnt/sdcard/FaceDB/1.jpg");//one of my face 
    Mat img2 = Highgui.imread("/mnt/sdcard/FaceDB/2.jpg");//one of my different face 

    //extract keypoints 
    MatOfKeyPoint keypoints = new MatOfKeyPoint(); 
    MatOfKeyPoint logoKeypoints = new MatOfKeyPoint(); 

    detector.detect(img1, keypoints);//this is the problem "fatal signal" 
    Log.d("LOG!", "number of query Keypoints= " + keypoints.size()); 
    detector.detect(img2, logoKeypoints); 
    Log.d("LOG!", "number of logo Keypoints= " + logoKeypoints.size()); 


} 

當我執行程序時,它會給出一個錯誤。只是這個。

A/libc(30444): Fatal signal 11 (SIGSEGV) at 0x00000000 (code=1) 

我搜索了這個錯誤。他們說,當本地類嘗試達到或寫入0x00000000內存地址時會發生此錯誤。但我無法弄清楚如何解決這個問題。 你能告訴我我該怎麼辦?

在此先感謝

+1

有你在STDERR的任何輸出消息? – brotherofken 2013-04-07 13:15:23

+1

我試圖在logcat中顯示錯誤。我得到了同樣的致命信號錯誤。另一方面,我不知道如何使用或在哪裏使用STDERR。 – COvayurt 2013-04-07 14:09:08

回答

4

好的! SURF功能現已獲得專利this thread。所以我認爲有關這個問題的錯誤。誰試圖提取SURF功能,您可以繼續使用ORB功能,這些功能在this thread工作正常,除非匹配功能。我希望這將有助於搜索android SURF功能提取。

+0

我接受任何有關這個話題的批評。如果我錯了,請糾正我。 – COvayurt 2013-04-19 13:20:12

+0

我已經按照你提供的鏈接給出了ORB功能的教程,但是問題在於它總是不給。的好匹配相同(等於500),我已經嘗試了不同的圖像,然後最小值和最大值的變化,但沒有良好的比賽保持不變。我也想獲得對象圖像中場景的座標,如果你知道如何做到這一點,請幫助我 – 2014-01-01 07:26:15

3

SURF不包含在OpenCV Android的分發包中。要使用它,您需要編譯非自由模塊並在您的項目中使用它。因此,您需要做的是創建一個NDK項目,將非自由模塊作爲獨立庫進行編譯。然後使用這個庫來編譯你的程序。那麼你應該能夠建立你的應用程序。你可以參考這個tutorial

+1

我已經提到該教程,我已經創建了2個.so文件,如他們所描述的。現在我想使用衝浪檢測,但我應該如何編寫代碼(C++或java),然後如何從我的android代碼調用該方法。請指導我這樣做,感謝您的支持 – 2014-01-07 04:18:01

+0

本教程的第二部分介紹如何通過NDK和JNI使用OpenCV功能:https://sites.google.com/site/wghsite/technical-notes/opencv_nonfree_android_jni_demo – 2015-04-14 21:46:30

0

下載舊版本,即4.2.1或更新的OpenCV 4.2.0,並用它爲您的項目