从图像提取数字和字母功能



我正在编写一个Python程序来对字母和数字进行分类。我已经写了分类器,并且为数据集提供了图像。我真的没有太多在Python或使用图像的经验。我的问题是如何使用我拥有的图像来创建数据集。如何像阵列一样用它们的形状创建。我应该只创建每个图像的数组吗?还是使用颜色直方图?我可能会将所有图像转换为灰度。

我发现链接对猫和狗进行了分类。它使用两种方法来提取图像功能,但我不知道这是否适用于我的案件。

k-nn-clalerifier-for-image-classification

任何人都可以指导我,例如,我可以将图像的功能提取到向量,以便我可以在" dataset.data"文件中写入此数据?

我将使用图像bellow之类的图像:

字母" e"

我什至考虑过将图像调整为32x32,并像代表图像的0和1的位图一样创建。

任何人都可以指导我,例如,我可以将图像的功能提取到向量,以便我可以在" dataset.data"文件中写入此数据?

谢谢。

您通常需要创建一个numpy阵列来保存所有培训数据。通常以以下形状排列它:

X_train.shape = (N, img.shape[0], img.shape[1])

其中n是集合中的图像数。

这样,如果您使用的是单个通道(灰度),则X_train[i,:,:]将保持"图像像素"的值。请注意,建议将这些值归一化,但这取决于您选择训练的模型。

这是如何创建这样的构建数组的快速示例:

import numpy as np
import cv2
X = np.zeros((N, IMG_SIZE[0], IMG_SIZE[1]), dtype=np.float32) 
y = np.zeros((N))
for idx, img_path in enumerate(images_path):
  img = cv2.imread(img_path)
  assert ((img.shape[0], img.shape[1]) == IMG_SIZE)
  gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
  X[idx, :, :] = gray
  y[idx] = # label of this image
# if you wish to normalize:
X = (X/255.0) - 0.5

有许多用于数字分类器的教程许多通常以MNIST数据集为例。这是一个例子,但是您应该继续进行谷歌搜索。

如果您想取得更好的结果,则可能想研究神经网络。同样,那里有许多教程,这是一个使用TensorFlow的示例。

我认为您可能正在寻找:

http://www.scipy-lectures.org/advanced/scikit-learn/

Sklearn是一个非常容易学习的机器学习包,并带有许多教程。希望它有帮助,

最新更新