拆分数据集

时间:2018-01-19 14:02:00

标签: python-2.7 opencv machine-learning

我是opencv和python的新手。

我正在尝试在opencv中创建数独求解器,并希望使用此图像作为我的数据集来识别数独的数字。 我希望将整个图像用作数据集。

sudoku digits dataset

尺寸:468x108

此图像连续有39个数字,有9个这样的行[1 .. 9]

image = cv2.imread( 'images/digits_sudoku4.png')

image = cv2.resize( image, None, fx=2, fy=2,)
gray = cv2.cvtColor( image, cv2.COLOR_BGR2GRAY)


cells = [np.hsplit(row, 39) for row in np.vsplit(gray, 12)]

# Convert the List data type to Numpy Array
x = np.array(cells)
print ("The shape of our cells array: " + str(x.shape))


train = x.astype(np.float32)  # Size = (3500,400)
# Create labels for train and test data
k = [ 1, 2, 3, 4, 5, 6, 7, 8, 9]
train_labels = np.repeat( k, 468)[:, np.newaxis]


# Initiate kNN, train the data, then test it with test data for k=3
knn = cv2.KNearest()
knn.train(train, train_labels)
#ret, result, neighbors, distance = knn.find_nearest(test, k=3)

# Now we check the accuracy of classification
# For that, compare the result with test_labels and check which are wrong
'''
matches = result == test_labels
correct = np.count_nonzero(matches)
accuracy = correct * (100.0 / result.size)
print("Accuracy is = %.2f" % accuracy + "%")
'''


cv2.imshow( 'Sudoku', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

我在线路knn.train(train,train_labels)上遇到此错误......

cv2.error: /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/ml/src/inner_functions.cpp:857: error: (-5) train data must be floating-point matrix in function cvCheckTrainData

请帮帮我。

三江源。

0 个答案:

没有答案