2016-02-07 1 views
0

Я пытаюсь обучить классификатор изображений в scikit-learn. У меня есть куча входных изображений, и я использую Pillow для их обработки. Мой вопрос в том, какую форму дать данные подушки для scikit-learn.Как передать данные изображения Pillow в scikit-learn?

Это мой код прямо сейчас:

training = glob.glob('./img/training/*/*.bmp') 
data = [] 
classes = [] 
for imagefile in training: 
    edges = Image.open(imagefile).filter(ImageFilter.FIND_EDGES).convert("L") 
    in_data = np.asarray(edges, dtype=np.uint8) 
    data.append(in_data[0]) 
    if 'class1' in imagefile: 
     classes.append('class1') 
    else: 
     classes.append('class2') 
clf = svm.SVC(gamma=0.001, C=100.) 
clf.fit(data, classes) 

Это работает без ошибок, но я поставил код вместе довольно грубо, и я не уверен, что это правильно.

В частности, я не уверен, должен ли я использовать in_data[0]. Я просто сделал это, потому что используя in_data дает мне ошибку: ValueError: Found array with dim 3. Estimator expected <= 2.

ответ

0

Если вы не хотите, чтобы первая строка матрицы изображения (in_data [0] возвращает вам первую строку) каждого изображения, вы, вероятно, захотите использовать уплощение.

Сглаживание будет принимать каждую строку матрицы изображения и помещать строки позади друг друга в одномерном векторе.

Таким образом, становится data.append (in_data.flatten())

Вы можете изменить размер изображения в меньшем формате первых, уменьшить количество столбцов вашей матрицы данных.

Смежные вопросы