Is OpenCV 3.0.0-beta missing KNN?

Just updated from opencv-2.4.11, KNearest seems to be missing

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 
+2
source share
2 answers

Many modules have been removed from the OpenCV core and marked as non-free. These modules have a separate repository and must be built separately.

The repository is here https://github.com/itseez/opencv_contrib/

Information was found in this answer fooobar.com/questions/355762 / ...

+3
source

In fact, KNearest been moved to the cv2.ml module in opencv3, and you have to call cv2.ml.KNearest_create() to use 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 

For more information, run help(cv2.ml.KNearest_create()) .

Enjoy :)

+26
source

All Articles