我写了一个python程序来分类字母和数字。我已经写了分类器,我有我的数据集的图像。我真的不具备python或使用图像方面的经验。 我的问题是如何用我拥有的图像创建我的数据集。如何创建具有它们形状的数组。我应该只创建每个图像的numpy数组吗?或者使用颜色直方图? 我可能会将所有图像转换为灰度。
我发现下面的链接对猫和狗进行了分类。它使用两种方法来提取图像特征,但我不知道这是否适用于我的情况。
k-nn-classifier-for-image-classification
任何人都可以指导我,我可以将我的图像的功能提取到矢量,例如,所以我可以在我的" dataset.data"文件?
我将使用如下图像的图像:
我甚至考虑过将图片大小调整为32x32,并创建一个代表图像的0和1位图。
任何人都可以指导我,我可以将我的图像的功能提取到矢量,例如,所以我可以在我的" dataset.data"文件?
谢谢。
答案 0 :(得分:1)
您通常希望创建一个Numpy数组来保存所有训练数据。通常将其排列成以下形状:
X_train.shape = (N, img.shape[0], img.shape[1])
其中N是集合中的图像数量。
这样,如果您使用的是单通道(灰度),X_train[i,:,:]
将保存第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数据集作为示例。这是一个example,但你应该继续谷歌吧。
如果你想获得更好的结果,你可能想要研究神经网络。同样,很多教程,这里有一个example using tensorflow。
答案 1 :(得分:1)
我想你可能正在寻找这个:
http://www.scipy-lectures.org/advanced/scikit-learn/
Sklearn是一个非常容易学习的机器学习包,有很多教程。 希望它有所帮助,