2015-04-23 84 views
2

OpenCV C++中的FLANN匹配器工作良好,但從環視看來,OpenCV Java中沒有FlannBasedMatcher的包裝,但我發現了兩種可能的(?)解決方法,我不太清楚如何使用。用於OpenCV Java的FLANN

首先是回答前一個問題:

http://answers.opencv.org/question/12429/matching-orb-descriptors-with-flann-lsh-on-android/?answer=12460#post-id-12460

但我不太清楚他的意思是「用普通匹配廠創建匹配器和設置參數」

另一種選擇是使用JavaCV似乎有FLANN的實現:

https://github.com/bytedeco/javacpp-presets/blob/master/opencv/src/main/java/org/bytedeco/javacpp/opencv_flann.java

我一直在使用原始的OpenCV Java庫開發一個應用程序,但我想知道,是否可以一起使用JavaCV,以便我可以使用JavaCV的FLANN函數,或者將同時使用這兩個庫工作?還是有人知道如何使用第一個答案的建議?

任何幫助將不勝感激,謝謝。

+0

我在之前使用過相同的代碼。當你混合opencv java綁定和JavaCV時,會變得混亂。您可能會遇到一些命名衝突,因此您必須使用完全限定的軟件包名稱,並且增加了複雜性,但是它在幾年前嘗試使用時發揮了作用,當時JavaCV已經實現了opencv中尚未提供的某些人臉檢測工具。對不起,弗蘭不能幫忙。 – medloh

回答

2
  1. 對於第一種方法,「使用通用匹配的工廠和設置參數來創建匹配器」指的是下面的代碼

DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.FLANNBASED);

對於Java的設置參數,你就必須創建一個yaml配置文件和使用matcher.read()來讀取參數,因爲目前在Java中沒有用於配置參數的包裝器。另外需要注意的是

  1. 至於使用JavaCV,medloh的評論是正確的。它增加了複雜性,但是可能的。
0

在版本3.2之前的OpenCV java包裝中存在一個錯誤。最近的版本沒有這個缺陷,所以你可以在Java中實例化FLANN匹配如下:

FlannBasedMatcher matcher = FlannBasedMatcher.create();

DescriptorMatcher是過時的包裝,我不建議使用它。