Scikit-Learn(Python)中的手写数字示例如符号识别



我注意此示例:http://scikit-learn.org/stable/auto_examples/plot_digits_classification.html#example-plot-plot-digits-digits-classification-plassification-plassification py在Scikit-Learn Python库中的手写数字上。

我想准备一个3D阵列(n* a* b),其中n是我的图像编号(75),而a* b是图像的矩阵(例如,在示例中,一个8x8形状)。我的问题是:我有每个图像的迹象不同:(202,230),(250,322)..此错误: valueerror:数组维度必须同意,除了此代码中的d_0

#here there is the error:
grigiume = np.dstack(listagrigie)
print(grigiume.shape)
grigiume=np.rollaxis(grigiume,-1)
print(grigiume.shape)

有一种方法可以在标准尺寸(即200x200)中调整所有图像的大小,或者将带有矩阵(a,b)的3D数组(a,b)中的3D数组调整大小:

data = digits.images.reshape((n_samples, -1))
classifier.fit(data[:n_samples / 2], digits.target[:n_samples / 2])

我的代码:

import os
import glob
import numpy as np
from numpy import array
listagrigie = []
path = 'resize2/'
for infile in glob.glob( os.path.join(path, '*.jpg') ):
    print("current file is: " + infile )
    colorato = cv2.imread(infile)
    grigiscala = cv2.cvtColor(colorato,cv2.COLOR_BGR2GRAY)
    listagrigie.append(grigiscala)
print(len(listagrigie))
#here there is the error:
grigiume = np.dstack(listagrigie)
print(grigiume.shape)
grigiume=np.rollaxis(grigiume,-1)
print(grigiume.shape)

#last step
n_samples = len(digits.images)
data = digits.images.reshape((n_samples, -1))
# Create a classifier: a support vector classifier
classifier = svm.SVC(gamma=0.001)
# We learn the digits on the first half of the digits
classifier.fit(data[:n_samples / 2], digits.target[:n_samples / 2])
# Now predict the value of the digit on the second half:
expected = digits.target[n_samples / 2:]
predicted = classifier.predict(data[n_samples / 2:])
print "Classification report for classifier %s:n%sn" % (
classifier, metrics.classification_report(expected, predicted))
print "Confusion matrix:n%s" % metrics.confusion_matrix(expected, predicted)
for index, (image, prediction) in enumerate(
    zip(digits.images[n_samples / 2:], predicted)[:4]):
    pl.subplot(2, 4, index + 5)
    pl.axis('off')
    pl.imshow(image, cmap=pl.cm.gray_r, interpolation='nearest')
    pl.title('Prediction: %i' % prediction)
pl.show()

您必须将所有图像大小调整到固定尺寸。例如使用Image PIL或枕头类:

from PIL import Image
image = Image.open("/path/to/input_image.jpeg")
image.thumbnail((200, 200), Image.ANTIALIAS)
image.save("/path/to/output_image.jpeg")

edit :以上无法使用,试试resize

from PIL import Image
image = Image.open("/path/to/input_image.jpeg")
image = image.resize((200, 200), Image.ANTIALIAS)
image.save("/path/to/output_image.jpeg")

编辑2 :可能有一种方法可以保留纵横比并用黑色像素垫垫,但我不知道该如何在几个pil调用中做。您可以使用PIL.Image.thumbnail并使用Numpy进行填充。

相关内容

  • 没有找到相关文章

最新更新