我的代码:
import cv2
import numpy as np
import matplotlib.pyplot as plt
# Feature set containing (x, y) values of 25 known/train data
traindata = np.random.randint(0, 100, (25, 2)).astype(np.float32)
# Label 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.ml_KNearest()
knn.train(traindata, responses)
ret, results, neighbours, dist = knn.findNearest(newcomer, 3)
plt.show()
链接到此代码的OpenCV文档 - https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_ml/py_knn/py_knn_understanding/py_knn_understanding.html#knn-understanding
** OpenCV版本 - ** OpenCV 3.4.1
编程语言 - Python
我正在尝试使用OpenCV docs网站上的基本代码训练kNN。 但它给出错误“不正确的自我类型(必须是'ml_StatModel'或其衍生物)”
我找不到函数cv2.KNearest()和knn.find_nearest所以我相应地更改了它们。
有人可以试试这段代码并帮助我吗?
感谢。
答案 0 :(得分:0)
我在这里发现了类似的问题。 stackoverflow.com/a/32990528/9709132祝你好运!