python版本:3.6.5
opencv版本:3.2.0
使用的是jupyter notebook
源代码如下:
import cv2 import numpy as np import matplotlib.pyplot as plt %matplotlib inline # Feature set containing (x,y) values of 25 known/training data trainData = np.random.randint(0,100,(25,2)).astype(np.float32) # Labels each one either Red or Blue with numbers 0 and 1 responses = np.random.randint(0,2,(25,1)).astype(np.float32) # Take Red families and plot them red = trainData[responses.ravel()==0] plt.scatter(red[:,0],red[:,1],80,'r','^') # Take Blue families and plot them blue = trainData[responses.ravel()==1] plt.scatter(blue[:,0],blue[:,1],80,'b','s') # plt.show() newcomer = np.random.randint(0,100,(1,2)).astype(np.float32) plt.scatter(newcomer[:,0],newcomer[:,1],80,'g','o') knn = cv2.KNearest_create() knn.train(trainData,cv2.ml.ROW_SAMPLE,responses) ret, results, neighbours ,dist = knn.findNearest(newcomer, 3) print ("result: ", results,"\n") print ("neighbours: ", neighbours,"\n") print ("distance: ", dist) plt.show()
出现的错误:
--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-18-35bac89cb177> in <module>() 18 plt.scatter(newcomer[:,0],newcomer[:,1],80,'g','o') 19 ---> 20 knn = cv2.KNearest_create() 21 22 knn.train(trainData,cv2.ml.ROW_SAMPLE,responses) AttributeError: module 'cv2' has no attribute 'KNearest_create'
解决方法:
opencv官方教程中的是opencv2的版本
在3中需要使用
cv2.ml.KNearest_create()
参考链接:https://stackoverflow.com/questions/34247502/cv2-ml-knearest-object-has-no-attribute-find-nearest