我在进行一个手写识别项目,使用 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_heightnew_width = int(cur_width * height_fac)size = new_width, 113imresize = im.resize((size), Image.ANTIALIAS) # Resize so height = 113 while keeping aspect rationow_width = imresize.size[0]now_height = imresize.size[1] # Generate crops of size 113x113 from this resized image and keep random 10% of cropsavail_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 normalizeT_test = T_test.astype('float32')T_test /= 255shuffle(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)
回答:
图片有 3 个通道,所以你需要使用 3 而不是 1:
T_test = T_test.reshape(T_test.shape[0], 113, 113, 3)