0

我的代码将数字数据转换为灰度,然后将其转换为 28*28 大小。但是从这段代码中,如果我尝试从显示图像的代码中删除重塑线,我无法在输出中获取图像并出现错误图像没有给出正确的形状。

 from PIL import Image
    user_test = filename
    col = Image.open(user_test)
    gray = col.convert('L')
    bw = gray.point(lambda x: 0 if x<100 else 255, '1')
    bw.save("bw_image.jpg")
    bw
    img_array = cv2.imread("bw_image.jpg", cv2.IMREAD_GRAYSCALE)
    img_array = cv2.bitwise_not(img_array)
    print(img_array.size)
    plt.imshow(img_array, cmap = plt.cm.binary)
    plt.show()
    img_size = 28
    new_array = cv2.resize(img_array, (img_size,img_size))
    plt.imshow(new_array, cmap = plt.cm.binary)
    plt.show()
    user_test = user_test.reshape(-1,img_size,img_size)
    user_test = tf.keras.utils.normalize(new_array, axis = 1)
    predicted = model.predict([[user_test]])
    a = predicted[0][0]
    for i in range(0,10):
      b = predicted[0][i]
      print("Probability Distribution for",i,b)
    
    print("The Predicted Value is",np.argmax(predicted[0]))

错误获取:

 AttributeError                            Traceback (most recent call last)
    <ipython-input-34-04ae8dbf024e> in <module>()
         15 plt.imshow(new_array, cmap = plt.cm.binary)
         16 plt.show()
    ---> 17 user_test = user_test.reshape(-1,img_size,img_size)
         18 user_test = tf.keras.utils.normalize(new_array, axis = 1)
         19 predicted = model.predict([[user_test]])
    
    AttributeError: 'str' object has no attribute 'reshape'
4

1 回答 1

1

您正在尝试重塑 'user_test' 这只是一个包含文件路径的字符串,如第 2 行所示user_test = filename。所以,显然你无法重塑它。相反,您可以&您应该在打开该图像文件后获得数组。例如,img_array或者new_array可以重塑。

于 2021-04-15T06:39:18.830 回答