2015-03-31 67 views
2

才從OpenCV的-2.4.11升級,KNearest似乎缺少OpenCV 3.0.0-beta缺少KNN?

In [27]: import cv2 
In [28]: print(cv2.__version__) 
3.0.0-beta 

In [29]: cv2.KNearest() 

--------------------------------------------------------------------------- 
AttributeError       Traceback (most recent call last) 
<ipython-input-29-d2ea29abad59> in <module>() 
----> 1 cv2.KNearest() 

AttributeError: 'module' object has no attribute 'KNearest' 

In [30]: cv2.K 
cv2.KAZE_DIFF_CHARBONNIER  cv2.KAZE_DIFF_WEICKERT   cv2.KMEANS_RANDOM_CENTERS  cv2.KeyPoint 
cv2.KAZE_DIFF_PM_G1   cv2.KAZE_create    cv2.KMEANS_USE_INITIAL_LABELS cv2.KeyPoint_convert 
cv2.KAZE_DIFF_PM_G2   cv2.KMEANS_PP_CENTERS   cv2.KalmanFilter    cv2.KeyPoint_overlap 
+0

其他幾個,太:SIFT,FastFeatureDetector,ORB – 2015-03-31 13:36:48

回答

3

許多模塊從OpenCV的核心被拆除,並標記爲非自由。這些模塊具有獨立的存儲庫,必須單獨構建。

庫是這裏https://github.com/itseez/opencv_contrib/

的信息在這個答案https://stackoverflow.com/a/27419092/892914

+0

還沒有拿到足夠的積分,給予好評;所以,謝謝 – 2015-04-03 02:11:01

+0

很高興幫助。如果解決了你的問題,請接受答案,這就足夠了。 ;) – jnovacho 2015-04-03 11:32:57

25

在現實中發現,KNearest已經移動到模塊中opencv3 cv2.ml,你得叫cv2.ml.KNearest_create()使用KNN。

In [1]: import cv2 

In [2]: cv2.__version__ 
Out[2]: '3.0.0' 

In [3]: cv2.ml.KNea 
cv2.ml.KNearest_BRUTE_FORCE cv2.ml.KNearest_create cv2.ml.KNearest_KDTREE 

In [3]: cv2.ml.KNearest_create 

欲瞭解更多詳情,請運行help(cv2.ml.KNearest_create())

享受:)

+0

這應該是正確的答案。 – sonlexqt 2016-11-27 07:32:42

+0

這應該是正確的答案... – theangrylama 2017-06-30 06:47:57