2012-10-19 61 views
2

我在android項目中使用opencv拼接。未找到針對本機拼接的實現

public class MainActivity extends Activity implements OnClickListener { 

    private String mWarpType; 
    private String mMatchConf; 
    private String mConfThresh; 

    private SharedPreferences mSettings; 
    public static final String SETTINGS    = "Pano_Settings"; 

    private final String SETTINGS_WARP_TYPE   = "warp"; 
    private final String SETTINGS_MATCH_CONF   = "match_conf"; 
    private final String SETTINGS_CONF_THRESH   = "conf_thresh"; 

    private String mDefaultWarpType     = "spherical"; 
    private String mDefaultMatchConf     = "0.5"; 
    private String mDefaultConfThresh     = "0.8"; 
    ... 

    public native int Stitch(Object[] args);  

    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.GoButton: 

      List<String> s = new ArrayList<String>(); 
      s.add("Stitch"); 
      s.add("/sdcard/tesseract/images1.jpeg"); 
      s.add("/sdcard/tesseract/images2.jpeg"); 

      s.add("--warp"); 
      s.add(mWarpType); 
      s.add("--conf_thresh"); 
      s.add(mConfThresh); 
      s.add("--match_conf"); 
      s.add(mMatchConf); 

      s.add("--work_megapix"); 
      s.add("0.2"); 
      s.add("--seam_megapix"); 
      s.add("0.2"); 
      s.add("--expos_comp"); 
      s.add("gain"); 
      s.add("--output"); 
      s.add("/sdcard/tesseract/"); 

      Integer i = Stitch(s.toArray()); 
      Log.d("1",i.toString()); 
     break; 
     default: 
     break; 
     } 
    } 

} 

啓動應用程序,但是當針(s.toArray())被稱爲我得到的錯誤:

W/dalvikvm(15392): No implementation found for native Lcom/prototype/MainActivity;.Stitch ([Ljava/lang/Object;)I 

OpenCV的在職場成功添加和我的項目 - >屬性 - > Android的 - > Library add - > OpenCV lib項目 版本OpenCV 2.4.2。 示例來自項目android-opencv-panorama。

+1

貴本地C文件中有一個函數名跡,它接受你的對象,並返回整數? –

+0

看來你沒有這個方法的本地實現。 – ArtemStorozhuk

回答

4

您可能從樣本中「原樣」複製了本機代碼,但您的Java類具有不同的包和名稱。尋找你的CPP文件名爲Java_<some more>_Stitch()的功能,並將其重命名成爲:

Java_com_prototype_MainActivity_Stitch()