title: Keras + mnist + test own images. Bad prediction
body: <p>It works fine by testing mnist's own test images, but as soon as i use images from outside mnist, it predicts wrong. I even tried to copy one of the images from the mnist dataset, and it still could'nt predict the right digit (even though the exact same image was OK (predicted) when inside the mnist dataset).</p>
  
  <p>Could someone see what i do wrong? I'm guessing there's something with the dimensions or shape of the image.</p>
  
  <pre><code>import tensorflow as tf
  import numpy as np
  import matplotlib.pyplot as plt
  from keras.models import Sequential
  from keras.layers import Dense, Conv2D, Dropout, Flatten, MaxPooling2D
  import cv2 as cv
  
  (x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
  
  x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
  x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)
  input_shape = (28, 28, 1)
  x_train = x_train.astype('float32')
  x_test = x_test.astype('float32')
  # Normalizing the RGB codes by dividing it to the max RGB value.
  x_train /= 255
  x_test /= 255
  
  # -------------------------- CREATE MODEL ------------------------------
  '''
  model = Sequential()
  model.add(Conv2D(28, kernel_size=(3,3), input_shape=input_shape))
  model.add(MaxPooling2D(pool_size=(2, 2)))
  model.add(Flatten()) # Flattening the 2D arrays for fully connected layers
  model.add(Dense(128, activation=tf.nn.relu))
  model.add(Dropout(0.2))
  model.add(Dense(10,activation=tf.nn.softmax))
  
  # ----------------------------------------------------------------------
  
  model.compile(optimizer='adam',
                loss='sparse_categorical_crossentropy',
                metrics=['accuracy'])
  model.fit(x=x_train,y=y_train, epochs=1)
  
  # ----------------------------------------------------------------------
  '''
  model = tf.keras.models.load_model("C:/Users/A551110/PycharmProjects/keras_mnist/venv/mnistv2.model")
  file = "C:/Users/A551110/Documents/images/7.png"
  model.evaluate(x_test, y_test)
  
  image = cv.imread(file, cv.IMREAD_GRAYSCALE)
  image = cv.resize(image, (28,28))
  image = 255-image          #inverts image. Always gets read inverted.
  
  plt.imshow(image.reshape(28, 28),cmap='Greys')
  plt.show()
  pred = model.predict(image.reshape(1, 28, 28, 1), batch_size=1)
  
  print(pred.argmax())
  </code></pre>
  
  <p>I've tried <code>pred = model.predict(image.reshape(1, 28, 28, 1))</code>,</p>
  
  <p>as well as <code>pred = model.predict_classes(image.reshape(1, 28, 28, 1))</code></p>
  
  <p><a href="https://i.stack.imgur.com/cBPLN.png" rel="nofollow noreferrer">The digits i was predicting. Upper one from mnist dataset (predicted correctly) and one lower one copied and put in (predicted wrongly)</a></p>