почему у меня ошибка формы, когда я np.array (изображение) - PullRequest
0 голосов
/ 10 июля 2019

, поэтому я работаю над проектом идентификации почерка, и он отлично работает с использованием IamDB. Однако, когда я пытаюсь сделать снимок почерка самостоятельно, у меня возникает эта ошибка, есть идеи, как ее исправить? Я попытался изменить изображение в оттенках серого, и оно не работает

images = []
PTH = Path_to_test 
#filename  = os.path.basename(PTH[0])
filename = PTH[0]
#******************************************************
print (filename)
im = Image.open(filename)
#print ("cu")
cur_width = im.size[0]
cur_height = im.size[1]
    # print(cur_width, cur_height)
​
height_fac = 113 / cur_height
​
new_width = int(cur_width * height_fac)
size = new_width, 113
​
imresize = im.resize((size), Image.ANTIALIAS)  # Resize so height = 113 while keeping aspect ratio
now_width = imresize.size[0]
now_height = imresize.size[1]
    # Generate crops of size 113x113 from this resized image and keep random 10% of crops
​
avail_x_points = list(range(0, now_width - 113 ))# total x start points are from 0 to width -113
​
    # Pick random x%
factor = 0.1 
pick_num = int(len(avail_x_points)*factor)

random_startx = sample(avail_x_points,  pick_num)
​
for start in random_startx:
  imcrop = imresize.crop((start, 0, start+113, 113))
  images.append(np.asarray(imcrop))
T_test = np.array(images)
print (T_test.shape)
T_test = T_test.reshape(T_test.shape[0], 113, 113, 1)
    #convert to float and normalize
T_test = T_test.astype('float32')
T_test /= 255
shuffle(T_test)  
print (T_test.shape)

Форма T_test была (3, 113, 113, 3), и это было черно-белое изображение почерка. Это ошибка:

     34 T_test = np.array(images)
     35 print (T_test.shape)
---> 36 T_test = T_test.reshape(T_test.shape[0], 113, 113, 1)
     37     #convert to float and normalize
     38 T_test = T_test.astype('float32')

ValueError: невозможно преобразовать массив размером 114921 в форму (3,113,113,1) Я также использую

predictions = model.predict(T_test, verbose =1)

поэтому я не могу изменить его на (T_test.shape [0], 113, 113, 3)

1 Ответ

1 голос
/ 10 июля 2019

Изображения имеют 3 канала, поэтому вам нужно использовать 3 вместо 1:

T_test = T_test.reshape(T_test.shape[0], 113, 113, 3)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...