opencv python knn
Opencv Python Knn
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,'
') print('neighbours',neighbours,'
') print('dist',dist)
hasil: [[1.]]
jiran [[1. 1. 1.]]
dist [[130]. 260. 261.]]
Pengiktirafan Ocr
import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread('E:/python/ocr.png',0) # 20*20 is a number, the picture size is 1000*2000, 5000 numbers 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
#jimat
np.savez (‘knn_data.npz’, train = train, train_labels = train_labels)
dengan np.load (‘knn_data.npz’) sebagai data:
mencetak (data.files)
kereta api = data [‘train’]
train_labels = data [‘train_labels’]
Knn menggunakan nilai kelabu gambar
klasifikasi svm dan babi