import cv2 
import numpy as np
import matplotlib.pyplot as plt
#训练数据集
trainData=np.random.randint(0,100,(25,2)).astype(np.float32)
response=np.random.randint(0,2,(25,1)).astype(np.float32)
red=trainData[response.ravel()==0]
plt.scatter(red[:,0],red[:,1],80,'r','^')
blue=trainData[response.ravel()==1]
plt.scatter(blue[:,0],blue[:,1],80,'b','s')
#test
newcomer=np.random.randint(0,100,(10,2)).astype(np.float32)
plt.scatter(newcomer[:,0],newcomer[:,1],80,'g','o')
knn = cv2.ml.KNearest_create()
knn.train(trainData,cv2.ml.ROW_SAMPLE,response)
ret,results,neighbours,dist=knn.findNearest(newcomer,3)
print('results:',results,'\n')
print('neighbours',neighbours,'\n')
print('dist',dist)

opencv python knn
results: [[1.]]

neighbours [[1. 1. 1.]]

dist [[130. 260. 261.]]

ocr识别

import cv2 
import numpy as np
import matplotlib.pyplot as plt
img=cv2.imread('E:/python/ocr.png',0)
#没20*20为一个数字,图片大小1000*2000,5000个数字
cells=[np.hsplit(row,100) for row in np.vsplit(img,50)]
x=np.array(cells)
#ttaindata
train=x[:,:50].reshape(-1,400).astype(np.float32)
test=x[:,50:100].reshape(-1,400).astype(np.float32)

k=np.arange(10)
train_labels=np.repeat(k,250)[:,np.newaxis]
test_labels=train_labels.copy()
#knn
knn = cv2.ml.KNearest_create()
knn.train(train,cv2.ml.ROW_SAMPLE,train_labels)
ret,results,neighbours,dist=knn.findNearest(test,3)

#
matches=results==test_labels
correct=np.count_nonzero(matches)
accuracy=correct*100/results.size
print(accuracy)

91.64
opencv python knn

#save
np.savez(‘knn_data.npz’,train=train,train_labels=train_labels)
with np.load(‘knn_data.npz’) as data:
print (data.files)
train=data[‘train’]
train_labels=data[‘train_labels’]

knn使用图像灰度值
svm与hog分类

相关文章:

  • 2021-10-15
  • 2021-11-18
  • 2021-12-14
  • 2021-07-26
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-08-28
  • 2022-12-23
  • 2021-06-28
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案