经典vi设计案例分析,seo搜索引擎优化是做什么的,网站项目的流程,单页网站订单系统怎么改邮箱阅读对象#xff1a;熟悉knn、了解opencv和python。 1.knn理论介绍#xff1a;算法学习笔记#xff1a;knn理论介绍 2. opencv中knn函数 路径#xff1a;opencv\sources\modules\ml\include\opencv2\ml\ml.hpp 3.案例 3.1数据集介绍 我们的目的是创建一个可以对手写数字进行…阅读对象熟悉knn、了解opencv和python。 1.knn理论介绍算法学习笔记knn理论介绍 2. opencv中knn函数 路径opencv\sources\modules\ml\include\opencv2\ml\ml.hpp 3.案例 3.1数据集介绍 我们的目的是创建一个可以对手写数字进行识别的程序。为了达到这个目的我们需要训练数据和测试数据。OpenCV 安装包中有一副图片/samples/python2/data/digits.png, 其中有5000 个手写数字每个数字重复 500遍。每个数字是一个20x20 的小图。 所以第一步就是将这个图像分割成 5000个不同的数字。我们在将拆分后的每一个数字的图像重排成一行含有 400 个像素点的新图像。这个就是我们的特征集所有像素的灰度值。这是我们能创建的最简单的特征集。我们使用每个数字的前 250 个样本做训练数据剩余的250 个做测试数据。 3.2代码 示例中得到的准确率为91.72%和官网结果一样可以结合统计中的抽样重新分配训练集和测试集也可以尝试用不同的距离度量方法或者相似度度量方法取不同的K重新进行数据实验时间有限我并没有去找哪个参数代表的是距离度量方法。[备注方便查阅] import numpy as np
import cv2
from matplotlib import pyplot as pltdirC:/Users/Thinkpad/Desktop/picture/
img cv2.imread(dir5.png)
gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)# Now we split the image to 5000 cells, each 20x20 size
cells [np.hsplit(row,100) for row in np.vsplit(gray,50)]# Make it into a Numpy array. It size will be (50,100,20,20)
x np.array(cells)# Now we prepare train_data and test_data.
train x[:,:50].reshape(-1,400).astype(np.float32) # Size (2500,400)
test x[:,50:100].reshape(-1,400).astype(np.float32) # Size (2500,400)# Create labels for train and test data
k np.arange(10)
train_labels np.repeat(k,250)[:,np.newaxis]
test_labels train_labels.copy()# Initiate kNN, train the data, then test it with test data for k1
knn cv2.KNearest()
knn.train(train,train_labels)
ret,result,neighbours,dist knn.find_nearest(test,k5)# Now we check the accuracy of classification
# For that, compare the result with test_labels and check which are wrong
matches resulttest_labels
correct np.count_nonzero(matches)
accuracy correct*100.0/result.size
print accuracy 4.3中的图片 参考资料[1]http://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_ml/py_knn/py_knn_opencv/py_knn_opencv.html end!! 转载于:https://www.cnblogs.com/llfisher/p/6560696.html